[Java] Jar file runnen onder windows

Pagina: 1
Acties:
  • 727 views sinds 30-01-2008
  • Reageer

  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 15-09 12:35
Ik wil een JAR file runnen onder windows, alleen dat heb ik nog nooit gedaan.
Dus ik opzoeken hoe dat moet en ik heb dit gevonden.

java -jar c:\shock.jar

shock.jar is natuurlijk mijn jar file die ik wil runnen

java -jar c:\shock.jar vul in mijn Uitvoeren.. en de map C:\WINDOWS\java wordt geopend.
Dit is natuurlijk niet de bedoeling.

Ik heb geen idee hoe je een jar file moet uitvoeren, ik hoop dat iemand mij kan helpen.

  • Black Hawk
  • Registratie: Oktober 2003
  • Laatst online: 08-01 21:48
in windows verkenner er op dubbelklikken :)

Wie nooit tijd heeft, kan er niet mee omgaan.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:14
Als je een recente JRE hebt geinstalleerd gaat het al automatisch goed. Je kunt het ook wel handmatig oplossen en dan moet je zorgen dat de Java runtime (java.exe) in je PATH staat. (Dat kun je makkelijk testen door een command shell te openen en dan 'java' in te typen.) Zo ja, dan lijkt mij dat 'ie de executable voorang geeft boven die directory.

Alternatief kun je ook het directe pad naar de Java runtime opgeven, dus bv: "C:\Program Files\JRE_1.4.2\bin\java.exe" -jar "c:\shock.jar".

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 13-12 12:53

Robtimus

me Robtimus no like you

Probeer eens java.exe ipv java, dan neemt hij de executable en niet de directory.

Dat dubbelklikken werkt alleen als JAR geregistreerd is met javaw.exe EN het een GUI programma is. De console die nodig is voor console programma's verdwijnt te snel.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 15-09 12:35
Black Hawk schreef op 04 oktober 2004 @ 16:47:
in windows verkenner er op dubbelklikken :)
Dan wordt hij automatisch met Winrar geopend. :)

  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 15-09 12:35
Soultaker schreef op 04 oktober 2004 @ 16:48:
Als je een recente JRE hebt geinstalleerd gaat het al automatisch goed. Je kunt het ook wel handmatig oplossen en dan moet je zorgen dat de Java runtime (java.exe) in je PATH staat. (Dat kun je makkelijk testen door een command shell te openen en dan 'java' in te typen.) Zo ja, dan lijkt mij dat 'ie de executable voorang geeft boven die directory.

Alternatief kun je ook het directe pad naar de Java runtime opgeven, dus bv: "C:\Program Files\JRE_1.4.2\bin\java.exe" -jar "c:\shock.jar".
Werkt perfect, ik heb even een snelkopeling gemaakt

"C:\Program Files\Borland\jBuilder2005\jdk1.4\bin\java.exe" -jar c:\shock.jar

Nu werkt die perfect.
:*)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik snap nog steeds niet waarom sun geen exe wrapper generator met hun developerkit meeleverd. Ik gebruik nu JSmooth om executable opstarters te maken.. echt prettig.

[ Voor 5% gewijzigd door Alarmnummer op 04-10-2004 18:10 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:14
Dat is lomp; die .exe's zijn dan alleen onder Windows executable (onder een ander OS kun je de class/jar files er misschien weer uit prutsen, maar dat blijft een hoop gedoe). Dat ondermijnt het compile-once-run-anywhere principe nogal.

Normaal gesproken maakt de JRE installer jar-files onder Windows executable. Je kunt dan gewoon jar-files aanklikken om ze uit te voeren. Dat domme archivers als WinRAR het vervolgens nodig vinden om die associatie af te pakken, is Sun niet te verwijten. Het zou me niets verbazen als archivers de associatie met .EXE-files nog zouden willen afpakken (omdat dat wel eens een SFX archive zou kunnen zijn) als ze daarmee niet de hele installatie zouden verneuken.

Als iedereen gewoon .jar files laat uitvoeren door de Java runtime, dan is er geen enkel probleem.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Soultaker schreef op 04 oktober 2004 @ 19:01:
Dat is lomp; die .exe's zijn dan alleen onder Windows executable (onder een ander OS kun je de class/jar files er misschien weer uit prutsen, maar dat blijft een hoop gedoe).
Ze wrappen de jars files ook niet, maar het zijn eigelijk veredelde batfiles. Lijkt stukken professioneler dan die jar files.

Ik gebruik het nu ook en het is echt een genot.. bijna net een echte applicatie ;)

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 13-12 15:35

Jrz

––––––––––––

Alarmnummer,

Omdat je dan windows-only jars krijgt.

De JRE installer maakt jars dubbelklikbaar, dus als jij je manifest goed hebt, werkt het, maar dat wist je natuurlijk al. Anders werkt java -jar xxx.jar ook niet.

Wat ze moeten doen, zal ik misschien deze week even bakken :), is een dat een executable jar een icontje krijgt uit het manifest + anders een standaard icon (anders dan niet-executable jars)

[ Voor 25% gewijzigd door Jrz op 04-10-2004 19:47 ]

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Verwijderd

als je javaw gebruikt ipv java, krijg je er niet zo'n idiote console bij voor alle printouts en onafgevange exceptions.
-vm kun je ook nog gebruiken om het pad naar je JVM mee aan te geven.

[ Voor 25% gewijzigd door Verwijderd op 05-10-2004 17:25 ]


  • whitebunny
  • Registratie: Februari 2004
  • Niet online
De nieuwste jre's maken een jar onder windows inderdaad standaard al startable, maar ik vind het zelf handig om Java std wat meer geheugen te geven; daarom heb ik in de registry, onder

"HKEY_CLASSES_ROOT\jarfile\shell\open\command" de (Default) string aangepast en er de -Xmx parameter aan toegevoegd (om max. mem in te stellen), bv 800MB:

"C:\Program Files\Java\jre1.5.0\bin\javaw.exe" -Xmx800m -jar "%1" %*

Het "%1" staat voor de geklikte file, en het laatste "%*" zorgt ervoor, dat alle parameters die eventueel aan de jar zijn meegegeven, netjes worden doorgesluisd naar het javaw.exe commando.
Deze registry key zorgt er onder windows dus voor, dat het jarfile open-commando van de shell (lees: dubbelklik op een jar) gewoon "javaw -Xmx800m -jar <filename>" uitvoert.
Eerder in de registry kun je vinden, dat de extensie ".jar" wijst naar deze "jarfile" entry.


Daarnaast moet er, om een jar executable te maken in de meta-inf/Manifest.mf file van die jar met behulp van de "Main-Class" tag worden aangegeven, wat de Class is die gestart moet worden; deze class moet een "void main(String args[])" method hebben.

bv de volgende Manifest:

Manifest-Version: 1.0
Built-By: WhiteBunny 2004
Main-Class: net.whitebunny.sample.StartClass

AuthenticAMD


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Jrz schreef op 04 oktober 2004 @ 19:24:
Alarmnummer,

Omdat je dan windows-only jars krijgt.
Nee, want je verandert niets aan de jars zelfs. Je maakt een mooie executable die niets anders doet dan java -jar xxx aan te roepen en de vm initialiseerd met alle parameters. Erugh prettig.
De JRE installer maakt jars dubbelklikbaar, dus als jij je manifest goed hebt, werkt het, maar dat wist je natuurlijk al.
Yep..

Maar applicaties schrijf je ook niet voor jezelf maar voor een klant. En die willen gewoon een exe file.
Wat ze moeten doen, zal ik misschien deze week even bakken :), is een dat een executable jar een icontje krijgt uit het manifest + anders een standaard icon (anders dan niet-executable jars)
Check gewoon JSmooth ff. Voor windows krijg je een mooie exe, en voor de linux distro moet je gewoon een of ander script bestand meesturen.

[edit]
Trouwens nog een groot nadeel aan een executable jar is dat je maar 1 file als main class aan kan merken en dat is in sommige situaties niet wenselijk. Ik heb bv een Console.exe, GuiConsole.exe en een CodeViewer.exe die gebruik maken van dezelfde jars. Met een executable jar had ik dat niet voor elkaar gekregen (of ik had onnodig jars aan moeten maken die eigelijk alleen een main in zich hebben).

[ Voor 18% gewijzigd door Alarmnummer op 05-10-2004 18:23 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:14
Alarmnummer schreef op 05 oktober 2004 @ 18:21:
Trouwens nog een groot nadeel aan een executable jar is dat je maar 1 file als main class aan kan merken en dat is in sommige situaties niet wenselijk. Ik heb bv een Console.exe, GuiConsole.exe en een CodeViewer.exe die gebruik maken van dezelfde jars. Met een executable jar had ik dat niet voor elkaar gekregen (of ik had onnodig jars aan moeten maken die eigelijk alleen een main in zich hebben).
Ik heb momenteel geen JDK tot mijn beschikking, maar ik denk dat je toch nog wel command line arguments mee kunt geven? Je main class gebruikt die dan vervolgens om de juiste applicatie aan te roepen.

Verder kun je met shell integratie ook gewoon links naar JAR files maken in het startmenu. Je hoeft dan alleen een Windows-installer te hebben en je hoeft geen executable te gebruiken om te starten. Een gemiddelde eindgebruiker start namelijk ook geen executables op. Die klikt gewoon een icoontje aan en hoe het dan werkt zal hem/haar een zorg zijn.
Pagina: 1