# (runnable) JAR-File ausführen



## Wirago (18. Feb 2012)

hallo,
ich weiß, es gibt schon einige themen dazu, hab auch alle durchgearbeitet, allerdings gibts hierzu iwie keine lösung bisher.

im prinzip gehts hier um ein einfaches consolen-programm. ein paar zeilen ausgabe und ne eingabeaufforderung. 

jetzt will ich das in eclipse als "runnable jar file" exportieren und ausführen. allerdings tut sich beim doppelklick rein garnichts. eine entsprechende manifest.mf gibt es auch.

wenn ich aber eine .bat erstelle im stil von "java -jar [dateiname.jar]" dann klappts wunderbar.
per doppelklick tut sich allerdings nichts.

hab auch probiert alles java-mäige runter zu schmeißen und neu zu installieren. gebracht hats nichts.
(hab jetzt die JRE7 und das JDK1.7 drauf)

das gleiche tritt auf dem mac auf, dort gehts auch nur übers terminal mit dem befehl. also denk ich liegts iwie an dem programm oder dem manifest ansich, aber das stimmt eigentlich.


----------



## Marcinek (18. Feb 2012)

Du musst eine JAR mit Java assoziieren.

Am besten Rechtsklick "öffnen mit..." Und da Java TM auswählen.


----------



## Wirago (18. Feb 2012)

Marcinek hat gesagt.:


> Du musst eine JAR mit Java assoziieren.
> 
> Am besten Rechtsklick "öffnen mit..." Und da Java TM auswählen.



das ist von haus aus eingestellt gewesen.


----------



## irgendjemand (18. Feb 2012)

das problem ist das du eine CONSOLEN app hast ...

JAR ist jedoch unter den meisten systemen mit javaw verknüpft ... das ist ein spezieller wrapper für GUI apps ... also für dinge die kein terminal brauchen ...


deine möglichkeiten

1) eine GUI bauen ...
2) mit dem fakt leben das man eine CONSOLE app auch IMMER von console manuell per hand bzw durch ein script starten muss ..


btw : alleine das was du geschrieben hast sollte auffallen ...

in dein terminal schreibst du "java.exe ..." ...
wenn du allerdings mal in die file-assoc guckst ... und auch mal den taskmanager ... wirst du feststellen das JAR als OPEN "javaW.exe" hat ... und das ist der grund warum beim doppelklick KEIN terminal aufgeht ... weil es so nicht im sinne der erfindung ist ...


----------



## Wirago (18. Feb 2012)

irgendjemand hat gesagt.:


> das problem ist das du eine CONSOLEN app hast ...
> 
> JAR ist jedoch unter den meisten systemen mit javaw verknüpft ... das ist ein spezieller wrapper für GUI apps ... also für dinge die kein terminal brauchen ...
> 
> ...



oh... stimmt. hab n einfaches Fenster mit Button gebastelt, das geht ohne probleme. 
hab nicht gewusst, dass es n unterschied macht obs mit GUI oder ohne ist. 
is mir auch nicht ganz klar warum das so ist um ehrlich zu sein :-/

aber danke jedenfalls.


----------



## irgendjemand (18. Feb 2012)

der unterschied sollte eigentlich klar sein
wenn du ein programm ohne spezielle GUI programmierst ... dann hast du erstmal so *mal andere dinge ausgelassen* nur ein standard-terminal als kommunikationsmöglichkeit ... und das ist dann nicht mehr und nicht weniger als ein InputStream um eingaben vom user zu lesen ... und zwei verschiedene OutputStream *OUT und ERR* mit denen du dinge wieder ausgeben kannst ...

die unterschiede zwischen OUT und ERR sind das man OUT in der regel als pipe in eine datei umleiten kann ... ERR wird aber in aller regel trotzdem auf der console ausgegeben *zumindest unter windows so* ...

willst du dich nun von dieser art der user-interaktion lösen und etwas graphisches bauen dann musst du auch eine eigene GUI bauen ... das sind in aller regel erstmal ein Programm-Fenster und dessen inhalt *es gibt noch die möglichkeit des fullscreen und 3d rendering* ...

natürlich ist es kein problem dabei ein terminal im hintergrund offen zu haben ... zumindest für einen programmierer oder jemanden der ahnung davon hat ... aber es sollten hier nur debug infos ausgegeben werden *auf fehler sollte das programm entsprechend reagieren und eine GUI-nachricht darstellen* ...

für die normale anwendung ist das dann aber eigentlich nur störend und manchmal hinderlich *man hat gleich 2 fenster ... wenn man das terminal schließt wird gleich das komplette programm beendet ... der otto-normal-user kann mit dem debug output nichts anfangen ...* ...

ergo hat man etwas erfunden was genau das umgeht : javaW ... dadurch wird kein terminal benötigt *bzw es wird bewusst unterdrückt* ... und man hat ein "normales" programm in seinem eigenen fenster ...

ich hoffe diese kleine erklärung hilft dir etwas ....


----------



## Wirago (18. Feb 2012)

hm, so erklärt macht das natürlich sinn 
ich komm halt von der C# ecke. da gibts halt am ende ne .exe und damit hat sichs. ^^


----------

