Mám napsaný program (obyč. konzole), v Eclipse se normálně spustí. Když ho ale vyexportuju jako spustitelnej JAR soubor a poklikam na něj, jen přeblikne wait kurzor a nic se neděje. Rychlým probliknutím konzole to není, protože program čeká na vstup. Prostě se to vůbec nespustí.
Jo, nenastavil jsem v manifestu Main-Class. Teď se snažim podle návodu (http://www.mkyong.com/java/how-to-make-an-executable-jar-file/) nějak ten balíček dát dohromady, ale narážim na problém - všude píšou abych spustil příkaz "jar -cvfm.." a mě cmd vrací "jar není názvem vnitřního..". Zkoušim dát něco jako "java -jar -cvfm .." ale to skončí chybou "unable to access jarfile cvfm".
Moment, já se v tom ztrácim. Co se týče spuštění programu samotnýho:
poklikánim na ikonu to nejde
příkazem java soubor.jar to nejde
příkazem java -jar soubor.jar se normálně spustí
No a teď potřebuju do toho nějak vložit ten manifest.
Flowy, Kit: V jaký cestě? Teď jsem se dočetl, že musím nastavit tohle:
set PATH = %PATH%;C:\Program Files\Java\jdk1.7.0_07\bin
Ale příkaz "jar" pořád neexistuje.
Ještě: co teď čtu v návodech, používaj taky příkazy javac a apt, ty mi taky nefungujou.
Jinak když se kouknu do Program Files/Java mam tam: jdk1.6.0_26, jdk1.7.0, jdk1.7.0_07, jre6, jre7. To je v pořádku? Jako nainstalovanou mi to ukazuje v1.7.0_07.
Ještě dodatek: když dam pak echo %path% tak tam tu javu stejně nevidim.
import java.util.*;
import java.util.Scanner;
public class main
{
public static void main(String[] args)
{
System.out.println(new Date());
Scanner sc = new Scanner(System.in);
}
}
Zadam jar cfm Test.jar manifest.txt a potom spustim program java -jar Test.jar a dostanu: could not find or load main class main.
Když dam zadam jar cfm Test.jar manifest.txt main.class tak ten program přes java -jar Test.jar jde, ale přes ikonu ho pořád nespustim.
#10David Klouček
Pojmenovat třídu "main" je značně nestandardní a rozhodně tento název nedoporučuji. Ani neříká, co má ta třída dělat. Znáš snad v reálu nějaký objekt třídy "main"?
manifest.txt:
Main-Class: Test
Test.java:
import java.util.*;
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
System.out.println(new Date());
Scanner sc = new Scanner(System.in);
}
}
Ten program vypíše datum a skončí.
Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
#11Kit
Jasný, nechal jsem to jak mi to IDE vygenerovalo. Teď jsem to teda přejmenoval. No v konzoli to funguje, ale já potřebuju když to spustim přes ikonu, aby to tu konzoli zobrazilo.
#13Kit
Tenhle příkaz spouštím a píše mi to added manifest a adding Test.class.. ale ten jar se se stejně přes ikonu nespustí, jen přes příkaz java -jar Test.jar.. to je prostě do zblbnutí..
#16Kit
Jasně, ale jenom když to spouštim přes příkazovej řádek. Když normálně kliknu na ikonu tak čekam, že se mě otevře konzola, ale ono se nic neděje, jenom problikne wait kurzor a vůbec nic se nespustí. Pro jistotu sem tam přidal Thread.sleep(1000); ale prostě žádná konzole nevyskočí.
Nečekal jsem, že budou takovýhle problémy s tou Javou.
Kdybych to chtěl spustit z příkaz. řádku jako Test.jar tak by to relativně mělo jít, ne? Taky nejde.
Prostě funguje jen java -jar Test.jar, nic jinýho.
Manifest ti vygeneruje Eclipse, nebo můžeš použít vlastní - viz dokumentace. Nemusíš jar vytvářet, nebo upravovat ručně.
Normálně se při instalaci Javy na Windows vytvoří asociace pro jar soubory, tak aby se spouštěly přes "javaw.exe -jar". Javaw nevytváří konzolové okno. Jestli ti jde o toto, tak nejjednodušší asi bude to při spuštění testovat a případně spustit ten jar znovu přes java.exe (bez w).