jar-Datei mit java.exe anstatt mit javaw.exe ausführen

Henry939

Aktives Mitglied
Hallo Freunde der Sonne.

Ich entwickle gerne Kommandozeilenprogramme, da ich grafische Programme nicht so mag. Und nicht zuletzt auch deswegen, weil ich nicht viel Ahnung von grafischer Programmierung habe.
Windows Benutzer sind es gewöhnt, eine ausführbare Datei mit einem Doppelklick zu starten. Wenn man dies mit einer jar-Datei macht, wird der Start des Java-Programms durch den Prozeß javaw.exe veranlaßt. Dieser Prozeß sorgt allerdings dafür, daß das Programm ohne Kommandozeile gestartet wird, was für reine Kommandozeilenanwendungen etwas ungünstig ist. Wie muß ich die jar-Datei modifizieren, um diese beim Doppelklicken mit einer Kommandozeile zu starten?
 
Afaik kann man das nicht für einzelne Jar-Daten einstellen. Das jars mit javaw gestartet werden, ist 'ne Systemeinstellung.

Ich würde aber auch von Kommandozeilenprogrammnutzern erwarten, dass diese das über die Kommandozeile starten. Zumindest würde es mich irritieren, wenn plötzlich ne Kommandozeile geöffnet wird...
 
Hmm, aber es muß doch eine Lösung für dieses Problem geben... Mac-Computer benutze ich nicht, höchstens mit Linux drauf. Aber für den Windows-Benutzer muß man's so angenehm wie möglich machen. Der will keine Kommandozeile öffnen, der will einfach nur Doppelklicken 🙂
 
Die ist doch längst beantwortet. Windows orientiert sich an der Dateierweiterung. Da musst du dich eben entscheiden, welches das Standardprogramm für .jar sein soll. Ansonsten musst du selbst etwas basteln, z.B. Batch-Dateien.
Wie muß ich die jar-Datei modifizieren, um diese beim Doppelklicken mit einer Kommandozeile zu starten?
Die jar-Datei hat darauf keinen Einfluß.
 
Du kannst schon was machen, das ist aber ein ziemlicher Hack ... deine Main-Methode fungiert als Launcher, der startet dann einen neuen Prozess über java.exe und ruft eine andere main auf.

Besser: Verwende launch4j und leg in den Optionen fest, dass es sich um eine Konsolenanwendung handelt.

Die Windows-API unterscheidet strikt zwischen GUI-Anwendung und Konsolenanwendung (https://msdn.microsoft.com/en-us/library/fcc1zstk.aspx)
Deshalb gibt's auch die beiden .exe-Dateien(java und javaw)
java.exe spricht das CONSOLE-System an, während javaw das WINDOWS-System anspricht.
Standardmäßig ist javaw.exe zugewiesen, das kannst du aber auch manuell ändern, das musst du dann aber auf jedem PC machen.
 

Zurück
Oben