Diskuze: Tvorba samostatně spustitelného programu
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud chceš vytvořit z Java zdrojáku EXE soubor nezávislý na Javě (v podstatě si všechno potřebné nese s sebou), podívej se na Graal VM a její Native Image. Aktuálně to dost frčí (resp. Oracle to hodně propaguje).
Pokud ti závislost na Javě nevadí, mělo by stačit vytvořit zástupce vedoucího na JAR soubor tvého projektu.
Tak začal bych tím JARem. Díval jsem se do složek projektů, které jsem v rámci zde vytvářených projektů vytvořil a žádný soubor s příponou JAR tam není.
Každé IDE to generuje trošku jinak. Takže když tak napiš, jaké IDE používáš (NetBeans, IDEA nebo Eclipse).
Potom existuje ještě jeden způsob (když nepočítám consoli, ale neznám nikoho, kdo by dneska používal příkazy jar cf) a to generování (buildění) JARka přes Maven či jiný buildovací tool.
Tak napiš, co používáš a řeknu ti přesný postup.
PS: Pokud naprogramuješ Java FX applikaci, tak nevím jak NetBeans nebo Eclipse, ale IDEA dokáže pro Javu FX vygenerovat i exe soubor (respektive více spustitelných formátů).
Napsal jsem to malinko špatně - samozřejmě všichni to generují stejně, ale každé IDE to dává do jiného adresáře a generuje to vlastní cestou, ale to generování jako takové je vždy stejné:)
Ach, jo. To je pořád dokola. Zjevně jsi pořádně nehledal.
https://www.itnetwork.cz/…adku-zaklady
https://www.itnetwork.cz/…-gui-balicek
https://www.itnetwork.cz/…rary-a-uziti
Nevím, ale asi mu teď tvoje rady nepomohou. Popravdě jsem se sám
přesvědčil o spustitelnosti Javy jako takové, kdy dochází ke konfliktů
verzí.
Pokud jak píše s Javou začíná a dělá úvodní tutoriály, tak je možné,
že použije Javu 8 (včetně starších NB) - viz https://www.itnetwork.cz/…ova-aplikace
No a teď jsem zjistil právě kvůli tazateli v tomto článku, že může
dojít ke konfliktů verzí, kdy on může něco vyvinout v Javě 8, ale v
registrech a systému může mít nastavenou Javu 11-13...
Samozřejmě ta se mu nespustí.
Takže by to chtělo nejspíš sjednotit ty tutoriály na aktuální verzi
(popravdě osobně si myslím, že Oracle to zbytečně ztížil. Když to měl
v rukou Sun, tak stačilo stáhnout JDK a ten se zapsal jak do registrů, tak do
systému a i NetBean s ním uměl hned bez problémů komunikovat. A když se
přecházelo na vyšší verze, tak se to přepsalo. Teď to zbytečně
nováčkům ztěžují... (ale to je jen můj názor).
PS: On se neptal na spuštění JARka, ale jak to JARko vygenerovat.
Jak psal Robert (ale bohužel jen informativně), tak každé IDE umožní
spustitelný výstup.
Co se NetBeanů týče, tak u nich je to velmi jednoduché. Z počátku ti
napíšu nejrychlejší postup (existuje jich víc ale abys měl hned nějaký
výstup, tak ti toto bude stačit).
V Netbeanech se JARko generuje vždy, když spustíš projekt v IDE.
Samozřejmě pokud ho spustíš úspěšně bez chyb:)
JARko najdeš v adresáři projektu. Je tam složka dist (distribution). V něm
je JARko. Pokud jej budeš chtít měnit, tak stačí, aby sis třeba jen
spustitl projekt v NetBeanech a ono se vždy přepíše. (Nebo místo Run
zvolíš Build. Jak říkám, těch způsobů je mnoho).
No a to JARko spustíš buď dvojklikem a nebo přes příkaz v příkazové řádce: java -jar project.java (kde project.java bude samozřejmě název tvého JARka).
Pokud ti to nepůjde, spouštěj to přes tu příkazovou řádku, protože ti to případně vypíše chybu, proč se nic nezobrazuje.
Je možné, že budeš mít konflitk verzí - dneska je to občasná chyba. Potom si musíš nastavit Javy tak, abys měl stejnou Javu jak v IDE, tak v registrech, tak i v systému a to ti už posílal odkazy Robert.
Run v Netbeans defaultně nevytvoří jar, pouze zkompiluje soubory a spustí main metodu. Aby se vytvořilo jar, je třeba dát Build.
Tak si to zkus - mrkni do adresáře před spuštěním. Žádná dist
složka nebude. Spusť si to v NB a vytvoří se.
Já to tak měl celou dobu:) To, že se JARko buildí a negeneruje jsem se
dozvěděl, až když jsem se setkal s Mavenem:D Do té doby jsem Build nikdy
nepoužil:)
Ovšemže se vytvoří adresář dist, tam jsou přece ty zkompilované soubory. Ale jar se tam nevytvoří dokud nedáš Build.
Jo, díky všem za podněty. Opravdu jsem na ty lekce dopředu koukal jen
velmi zběžně, budu to muset přečíst. Vytvoření toho JAR souboru jsem v
tom NetBeans objevil. Jen mi vadí, že se to spolu s tím otevírá i to okno
příkazového řádku nebo jak to nazvat. Nedá se to nějak jednoduše
potlačit? Prostě abych jen klikl a vyskočilo jen to okno Swing.
Chápu správně, že pokud bych chtěl mít "cosi" spustitelného a
přenositelného na jiné PC, aniž bych musel řešit, co má nebo nemá ten
uživatel nainstalované, tak by se muselo jít cestou vytvoření EXE souboru,
jinak to nepůjde, ne? Bavím se tedy o OS Windows pochopitelně.
Chápu správně, že pokud bych chtěl mít "cosi" spustitelného a přenositelného na jiné PC, aniž bych musel řešit, co má nebo nemá ten uživatel nainstalované, tak by se muselo jít cestou vytvoření EXE souboru, jinak to nepůjde, ne? Bavím se tedy o OS Windows pochopitelně.
Mělo by to tak být, ale nedostal jsem se k tomu, abych to vyzkoušel (zavřeli školy...). Jinak bude vždy potřeba Java, ač myslím, že nebude nutné mít přesně verzi, pro kterou jsi to psal (pokud nebudeš používat nějaké šílenosti). Čekal bych, že i Java bude slušně zpětně kompatibilní.
Jen ten výsledný EXE bude dost velký (megabajty minimálně).
"No a teď jsem zjistil právě kvůli tazateli v tomto článku, že může dojít ke konfliktů verzí, kdy on může něco vyvinout v Javě 8, ale v registrech a systému může mít nastavenou Javu 11-13...Samozřejmě ta se mu nespustí."
Ale kulové, spustí. Jenom daný program nesmí obsahovat třídy které byli s JDK odstraněny. ( např. JavaFX). Obyčejný Swing + socket program zbuildovaný v Java 6,7,8 naprosto v pohodě spustíš i na Java 11,12,13,14.
PS: On se neptal na spuštění JARka, ale jak to JARko vygenerovat."
viz. odpověd bod 2. Seriály na to tu jsou. A jsou skutečně velmi triviální.
Chápu správně, že pokud bych chtěl mít "cosi" spustitelného a přenositelného na jiné PC, aniž bych musel řešit, co má nebo nemá ten uživatel nainstalované, tak by se muselo jít cestou vytvoření EXE souboru, jinak to nepůjde, ne? Bavím se tedy o OS Windows pochopitelně.
NE. Pokud počítač na kterém to chceš spustit bude mít naistalovaný JDK( u starších Jav )JRE, pak stačí mít pouze *.class a program spustíš přes příkazový řádek, nebo vygeneruješ spustitelný JAR a program spustíš "double-clickem" např. z plochy.
Existují speciální projekty jak vyrobit EXE, nicméně to je jenom JRE + tvůj program. Historicky to takto fungovalo v éře Java4,5,6,7,8. U novějších tento směr buildu nesleduji.
Nicméně tato varianta EXE je na nic, když od Java09 přišla modularita. Ta ti umožnuje vytvořit modulární projekt a vyexportovat to tak, že obsahem bude tvůj projekt(program ) a JVM s tebou používanými moduly. Většinou má velmi malý objem(min. 12 MB, max 200 MB), nicméně nespouští se přes "double-click" na JAR.
Zobrazeno 15 zpráv z 15.