# Ausführen von JAR soll Konsole öffnen



## netsplit (28. Jan 2010)

Hallo zusammen

Ich habe das letzte halbe Jahr ein Java-Buch durchgearbeitet und hab schon allerhand gelernt von OOP, Klassen, Interfaces über Collections bis hin zu Exceptions und vielem mehr. Dabei habe ich auch schon diverse sinnlose Mini-Progrämmchen programmiert hauptsächlich als Übungsaufgaben des Buches. Als IDE nutze ich Eclipse.

Nach dem ich meine Java-Versuche bisher immer nur innerhalb von Eclipse oder über die Konsole ausgeführt habe würde ich gerne ein JAR erstellen. Dies ist soweit eigentlich auch kein Problem.

Nehmen wir an ich habe ein einfaches HelloWorld-Programm 


```
public class HalloWelt {
	public static void main (String[] args) {
		System.out.println("Hallo Welt"); 
	}
}
```

Ist es nun möglich dieses in eine JAR zu verpacken und wenn ich es dann per Doppelklick ausführe egal ob unter Windows oder Linux, dass dann die Console geöffnet wird und der Text "Hallo Welt" ausgegeben wird? Wenn ich das JAR-File im jetzigen Zustand doppeklicke, so passiert nichts. Wenn ich die Konsole öffne und _java -jar HellWorld.jar_ eingebe, erscheint das "Hallo Welt" in der Konsole. 

Mache ich da eine Fehlüberlegung und ist das so einfach gar nicht möglich? Ich habe mich bereits im FAQ umgeschaut (insbesondere varianten-java-programme-starten-jar-bat-exe-cd) und auch in der Forensuche leider nichts gefunden.

Grüsse,
netsplit


----------



## Firestorm87 (28. Jan 2010)

Die ausgabe erfolgt auf der java-console...
Allerdings nutzt man diese form der ausgabe eben eigentlich nicht produktiv, sondern eher fürs fehler-logging....

Die meisten programme erhalten ja dann auch eine grafische oberfläche...

/EDIT: Die Java-Console kann man sich auch anzeigen lassen... musst dich mal durch die Systemsteuerung => Java => Erweitert kämpfen...


----------



## netsplit (28. Jan 2010)

achso, vielen Dank, da stellen sich mir aber folgende Fragen:

1. Wäre es dann möglich eine Konsole aufzurufen und den System.out.println dort reinzuschreiben?
2. Wenn ich das JAR aber über die Konsole ausführe, dann wird dasSystem.out.println ja auch dort reingeschrieben? Fungiert die Console dann als Java-Konsole oder wie ist das zu verstehen?
3. Wie öffne ich die Java-Konsole? Wir der Output denn dort angezeigt?


----------



## Ebenius (28. Jan 2010)

Unter Windows werden bei Doppelklick alle JAR-Dateien per [c]javaw[/c] ausgeführt. Dies kann man ändern; google erzählt Dir bestimmt wie das geht, Thema "File Association". Ändert man das Programm zu [c]java[/c] geht ein Konsolenfenster auf. Allerdings kann man das nur für *alle* [c].jar[/c]-Dateien ändern; nicht etwa für ein einzelnes Programm. Außerdem müsste dies natürlich auf jedem Client eingestellt werden. In Linux gibt es kein [c]javaw[/c]; dort werden JAR-Dateien mit dem normalen [c]java[/c]-Binary geöffnet; stdout und stderr laufen ins Leere.

Wenn Du eine Konsole benötigst, dann ist der normale Weg der, ein [c].sh[/c]-Skript für Linux zu schreiben und ein [c].cmd[/c] oder [c].bat[/c]-Skript für Windows. Die Skripte starten dann wiederum das [c]java[/c]-Programm. Wenn man diese Skripte doppelt anklickt geht normaler Weise ein Terminal auf und dort werden die Programme ausgeführt.

Ebenius


----------



## Firestorm87 (28. Jan 2010)

netsplit hat gesagt.:


> achso, vielen Dank, da stellen sich mir aber folgende Fragen:
> 
> 1. Wäre es dann möglich eine Konsole aufzurufen und den System.out.println dort reinzuschreiben?
> 2. Wenn ich das JAR aber über die Konsole ausführe, dann wird dasSystem.out.println ja auch dort reingeschrieben? Fungiert die Console dann als Java-Konsole oder wie ist das zu verstehen?
> 3. Wie öffne ich die Java-Konsole? Wir der Output denn dort angezeigt?



1. siehe ebnius (aber kurz: Nicht aus deinem Programm heraus)
2. seiehe ebnius (kurz: jein, da hier ein anderes Java-Programm als starter fungiert)
3. Ja wird er... ob die Console angezeigt wird kann man afaik in der Systemsteuerung ändern...

/EDIT: Ok nun steht alles oben  punkt 3 im edit


----------



## Ebenius (28. Jan 2010)

Firestorm87 hat gesagt.:


> /EDIT: Ok nun steht alles oben  punkt 3 im edit


Jetzt stehts hier: 

Jeder Prozess kennt drei Standard-Ströme. Einer ist stdin, einer stdout und einer stderr. Startest Du über ein Terminal (CMD in Windows, xterm, ... in Linux), werden stdout und stderr auf die Konsole umgeleitet, stdin wird von der Konsole auf das Programm umgeleitet. [c]javaw[/c] lässt die stdout und stderr ins Leere laufen, es sei denn man öffnet die Java-Console mit. Dann leitet [c]javaw[/c] die Ströme um zur Java-Console.

PS: Ich wünsche mir Write-Lock auf Forenthemen. :-D

Ebenius


----------

