HowTo:Ako spustiť java program z .jar'u
Z Java.betlista.net
Predstavme si (stačí aj čisto teoreticky), že máme dva .jar'y. V tom prvom je náš program (jeho funkcia v tomto momente nie je zaujímavá), nech jeho Main trieda (=trieda v ktorej je funkcia main a teda vstupný bod do programu) sa volá Program (v súbore Program.java a u mňa nech je balíček, package, rovná net.betlista.tests), celý archív sa volá program.jar. Druhým balíkom nech je loader.jar a ten obsahuje triedu Loader, ktorá nahrá konfiguráciu pre Program a preto program.jar potrebuje loader.jar.
Ak niekomu nevyhovoval predchádzajúci popis, tak si to predstavte konkrétnejšie - Program najprv pomocou Loader triedy prečíta konfiguračný súbor, ten si už sám spracuje a následne všetky riadky z tohto súboru vypíše na výstup s číslom riadka na začiatku. Trieda Loader má funkciu String readConfiguration(File configurationFile), ktorá prečíta všetko zo súboru a vráti to ako reťazec- String.
Prejdime však k tomu, čo nás zaujíma - ako spustiť Program (ako spustiť triedu vieme)? Sú dve možnosti:
- možnosť pri ktorej sme nemysleli na to, že k program.jar k behu potrebuje loader.jar je
$ java -cp program.jar:loader.jar net.betlista.tests.Program program.conf
- možnosť pri ktorej sme na to, že program.jar potrebuje k behu loader.jar mysleli
$ java -jar program.jar program.conf
Prvý príklad sa síce javí ako zložitejší na napísanie, avšak druhý je zložitejší na rozbehanie. Prečo? Ešte som nepovedal, čo znamená "mysleli sme na to, že program.jar potrebuje loader.jar". program, ktorým java programy spúšťame nemá odkiaľ (sám od seba) vedieť, že program.jar potrebuje loader.jar, preto mu to musíme niekde dať vedieť (napísať) a k tomu je nutné upraviť MANIFEST.MF súbor v štruktúre .jar archívu, konkrétne aby program.jar obsahoval v MANIFEST.MF riadok:
Class-Path: loader.jar
