# Konsolenausgabe erscheint nicht, bei Distribution als *.jar



## Hubivan (5. November 2007)

Hallo,

Ich habe ein kleines Java-Programm geschrieben, dass den Inhalt einer Datenbanktabelle auswerten soll und dabei einige Ausgaben auf der Konsole macht und ein Logfile erstellt.

Das ganze Programm habe ich jetzt mittels Ant zu einem *jar Archiv gepackt.
Führe ich das Programm jetzt in der Konsole aus, läuft das Programm durch erstellt das logfile aber die Konsolenausgaben werden nicht ausgegeben.

Die Konsolenausgaben mache ich wie gewohnt mit 





> System.out.println("Hallo Welt");


 (Nur ein Beispiel, den Text den ich tatsächlich ausgebe kann ich euch nicht verraten.
Achja, starte ich das Programm aus Eclipse heraus, werden die Ausgaben auf der Konsole wie erwartet auch gemacht.

Was ist da los? Hat jeman ne Idee was da schief läuft?


----------



## matdacat (6. November 2007)

Hm, sollte eigentlich schon funktionieren. Wie startest Du das JAR-File?


----------



## Hubivan (6. November 2007)

Nun zu Beginn hab ich das immer zu Fuß gemacht über die DOS-Konsole, und zwar mit:


> D:\Verzeichnis> meinprog.jar par1 par2



Nach dem mir das aber zu viel wurde, hab ich mir eine kleine Batch geschrieben
start.bat mit dem Inhalt


> meinprog.jar par1 par2
> pause



Die Bat starte ich durch einen Doppelklick im Windows Explorer.


----------



## MeinerEiner_80 (6. November 2007)

Moin!
Und wenn du das ganze mit 
java -jar meinprog.jar par1 par2 

startest?
Falls das funktioniert, gehe mal zu "Extras->Ordneroptionen->Dateitypen" und schaue nach, wie jar-Archive da gestartet werden. Ich tippe mal auf den Befehl "javaw". Dieser unterdrückt nämlich die Bildschirmausgabe. Denn solltest du auf "java" ändern..

*grüssle*
MeinerEiner


----------



## Hubivan (6. November 2007)

MeinerEiner_80 hat gesagt.:


> Moin!
> Und wenn du das ganze mit
> java -jar meinprog.jar par1 par2
> startest?



So funktioniert es. Danke!




MeinerEiner_80 hat gesagt.:


> Falls das funktioniert, gehe mal zu "Extras->Ordneroptionen->Dateitypen" und schaue nach, wie jar-Archive da gestartet werden. Ich tippe mal auf den Befehl "javaw". Dieser unterdrückt nämlich die Bildschirmausgabe. Denn solltest du auf "java" ändern..



Das hilft leider nicht  
Aber immerhin funktioniert jetzt eine Variante


----------



## matdacat (6. November 2007)

MeinerEiner hat recht: sieh Dir die Verknüpfungsoptionen von JAR-Dateien genau an und Du wirst sehen, dass diese mit javaw.exe gestartet werden - genau das passiert wenn Du über die Konsole lediglich die JAR-Datei angibst (und nicht diese als Parameter für java.exe). Ändere javaw.exe in java.exe um und das Konsolenfenster bleibt Dir erhalten und Du siehst somit die Ausgaben.


----------



## Hubivan (6. November 2007)

Ich hab mir jetzt eine Batch Datei gebastelt, die das Programm mit java.exe und den entsprechenden Parametern aufruft, damit klappt es jetzt ganz gut.

Danke für die Tips!


----------



## Fiskeboller (11. August 2010)

Hallo,

mein Problem ist ähnlich, vielleicht könnt ihr mir helfen.

Ich möchte durch Doppelklick, auf eine selbstausführbare Jar-Datei, ein Programm in der CMD Konsole starten. Das Programm ist ganz einfach, man kann Zeichen über Tastatur auf der Konsole eingeben und die gleichen Zeichen werden auf der Konsole wieder ausgegeben. Wenn ich die .class-Datei manuell über die Konsole starte, funktioniert das auch alles, jedoch nicht wenn ich die JAR-Datei starte. Ich vermute, es muss der Code erweitert werden, dahingehend, dass vielleicht eine Öffnungsanweisung für die Konsole eingebaut wird****?

Vorneweg: Ich möchte keine batch-Datei verwenden, sondern die Konsole soll rein durch eine Java Anweisung aus dem Jar-Archiv geöffnet und das kleine i/o-Programm ausgeführt werden.

Würde mich freuen, wenn mir jemand helfen könnte.

Grüße!


----------



## CPoly (11. August 2010)

Womit hast du denn die jar-Datei erstellt? Du benötigst innerhalb des Archivs (eine jar Datei ist im Prinzip eine zip-Datei) eine Manifest-Datei, welche unter anderem angibt, in welcher Klasse die Main-Methode zu finden ist.


----------

