Jak na JAVU? Neumím zkompilovat do JAR
Situace je taková - stáhl jsem si pěkný program circuit.jar, ke kterému dal autor i zdrojové kódy. Potřeboval bych tam něco drobného změnit. V Javě nedělám, tak se v tom plácám. Když to vezmu od konce:
Rozbalil jsem dotyčný program příkazem
jar xf circuit.jar
to mi vytvořilo soubory *.class a ve složce Meta-inf soubor manifest.mf
když to pak zase sloučím příkazem
jar cf circuit.jar *.class
vytvoří to soubor o 14 bajtů menší a nejde spustit.
Co dělám špatně?
V tom manifest souboru je napsáno Created-By: 1.6.0_22 (Apple Inc.)
Já jsem stáhl Javu jdk1.7.0_03 - mohlo by to být jinou verzí?
To nemluvím o tom, jak jsem pracně překládal ty originální .java soubory na výsledný circuit.jar, který také nefunguje, tak jsem to chtěl ověřit rozbalením toho funkčního.
.class jsou překompilované, je jasné že musíš upravovat .java soubory, že?
To je mi jasné, jenže než začnu hrabat do těch .java souborů (které mám), chtěl jsem ověřit, že mi to půjde zkompilovat a nejde - tak jsem chtěl zjistit, kde dělám chybu.
Tak jsem stáhl stejnou verzi jdk1.6.0_22
a zopakoval pokus s rozbalením a sloučním jar souboru, tentokrát má výsledný soubor circuit.jar o 10B méně a zase nejde spustit
a co to pise? Klidne to sem posli jestli to neni velke a podivame se na to. Nemuze to najit Main classu nebo neco takoveho, ne?
Jak jsem napsal o kus níže, vůbec nic to nenapíše.
Program je odtud:
circuit
konkrétně tady: circuit.zip
Zdrojové kódy zde: src.zip
Je to moc pěkný program na simulaci elektronických obvodů - především umí moc hezky (edukativně) animovaně zobrazovat kudy a kam tečou proudy.
Chtěl bych aspoň nastavit výchozí typ rezistorů na evropské a pokud to půjde, doladit i nějaké další věci - třeba ho přeložit i do češtiny.
Pro úplnost - vše se pokouším provádět ve windows.
Jestli jsem správně pochopil o co jde, tak soubor .jar je jen zkomprimovaný balíček jednotlivých souborů (zkompilovaných .class i případných datových souborů obrázky a tak...) přičemž v souboru manifest.mf jde především o definování "hlavního" souboru - který se pak z toho .jar souboru spouští.
Proč teda nejde ani tak jednoduchá operace jako rozbalení a sbalení souboru?
Když spouštím ten nově sbalený soubor, tak jen zabliká kontrolka disku a nic se nezobrazí...
Tak se zdá, že jsem na to možná přišel, jsem už sice doma, takže nemám nainstalováno vše a nemůžu to tak rychle ověřit, ale právě jsem zkusil ten původní program samostatně a autor zřejmě špatně ošetřil chybějící vstupní soubor - po chvilce nešel spustit ani originální program.
Edit: tak jsem to podstoupil ještě jednou, stáhnul a nainstaloval JDK a bohužel stav trvá.
Když to znovu spojím, program neudělá vůbec nic.
Tak jsem přecejen pokročil.
Když ten výsledný program spustím z příkazového řádku, napíše to:
Failed to load Main-Class manifest attribute from
circuit.jar
Samozrejme ze musis z cmd, jinak neuvidis vypis chyby (a idealne i spoustet programy odsud). A kdyz to rozbalis mas v manifestu radku s Main-Class?
Mám, ale nějak to asi nepobral...
Manifest-Version: 1.0
Created-By: 1.6.0_22 (Apple Inc.)
Main-Class: Circuit
Zkusil jsem to kompletně zadat z příkazové řádky:
jar cfe circuit.jar Circuit *.class
neboli vstupní bod definovat odtud a zdá se že už to jde...
achjo...
Jdu zkoušet překládat zdrojáky...
Tak už to snad funguje...
No člověk se pořád učí...
Díky za nakopnutí...