NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Alesh
Tvůrce
Avatar
Alesh:1.4.2020 22:08

Nevím, jak vytvořit samostatně spustitelný soubor/projekt ve Windows.

Zkusil jsem: Koukal jsem na net, ale nic moc jsem neobjevil. Navíc si říkám, že to tu musí být někde popsané a určitě perfektně, protože David Čápka to ani jinak neumí. ;-)

Chci docílit: Studuju jednotlivé sekce v Javě a teď jsem u formulářů ve Swing. Zběžně se v této sekci probírá i práce se soubory. A tak mě napadlo, že by bylo zajímavé umět udělat samostatně spustitelný program pod Windows. Prostě něco ve stylu ikonka na ploše, kliknu, otevře se mi nějaký ten formulář vytvořený ve Swing. Chci se zeptat, jak se toho docílí, příp. je to v nějaké lekci popsané? Zběžně jsem koukal do dalších sekcí/lekcí a nenašel jsem. Děkuji.

 
Odpovědět
1.4.2020 22:08
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Alesh
Martin Dráb:1.4.2020 23:11

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.

Nahoru Odpovědět
1.4.2020 23:11
2 + 2 = 5 for extremely large values of 2
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Martin Dráb
Alesh:1.4.2020 23:25

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í.

 
Nahoru Odpovědět
1.4.2020 23:25
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:2.4.2020 2:04

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ů).

Nahoru Odpovědět
2.4.2020 2:04
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:2.4.2020 2:05

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é:)

Nahoru Odpovědět
2.4.2020 2:05
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Lubor Pešek
Alesh:2.4.2020 2:08

Držím se tutoriálů, kde se jede převážně v NetBeans...

 
Nahoru Odpovědět
2.4.2020 2:08
Avatar
Robert Michalovič:2.4.2020 6:12

Ach, jo. To je pořád dokola. Zjevně jsi pořádně nehledal.

  1. Aby jsi spustil runnable jar je nutno vytvořit dva klíče viz. https://www.itnetwork.cz/…-eclipse-ide - pouze u toho druhé klíče upravíš cestu ke své Javě
  2. jak vytvořit runanble jar přes cmd,

https://www.itnetwork.cz/…adku-zaklady
https://www.itnetwork.cz/…-gui-balicek
https://www.itnetwork.cz/…rary-a-uziti

  1. Každé slušné IDE umožnuje výrobu(export) runnable(spus­titelné) jar. Je to jeho podstatou.
 
Nahoru Odpovědět
2.4.2020 6:12
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Robert Michalovič
Lubor Pešek:2.4.2020 11:39

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.

Nahoru Odpovědět
2.4.2020 11:39
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Alesh
Lubor Pešek:2.4.2020 11:59

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.

Nahoru Odpovědět
2.4.2020 11:59
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Atrament
Člen
Avatar
Odpovídá na Lubor Pešek
Atrament:2.4.2020 13:20

Run v Netbeans defaultně nevytvoří jar, pouze zkompiluje soubory a spustí main metodu. Aby se vytvořilo jar, je třeba dát Build.

 
Nahoru Odpovědět
2.4.2020 13:20
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:2.4.2020 20:47

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:)

Nahoru Odpovědět
2.4.2020 20:47
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Atrament
Člen
Avatar
Odpovídá na Lubor Pešek
Atrament:2.4.2020 21:02

Ovšemže se vytvoří adresář dist, tam jsou přece ty zkompilované soubory. Ale jar se tam nevytvoří dokud nedáš Build.

 
Nahoru Odpovědět
2.4.2020 21:02
Avatar
Alesh
Tvůrce
Avatar
Alesh:3.4.2020 0:00

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ě.

 
Nahoru Odpovědět
3.4.2020 0:00
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:3.4.2020 0:50

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ě).

Editováno 3.4.2020 0:51
Nahoru Odpovědět
3.4.2020 0:50
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Lubor Pešek
Robert Michalovič:3.4.2020 7:53

"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.

 
Nahoru Odpovědět
3.4.2020 7:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.