Unterschied zwischen java.exe und javaw.exe

143

Kürzlich habe ich festgestellt, dass einige Anwendungen ausgeführt werden javaw(nicht in java). Was ist der Unterschied zwischen ihnen und wie kann ich meine Swing-Anwendung ausführen javaw?

asela38
quelle
1
Ähnliche Frage und gute Antwort hier: stackoverflow.com/a/8194750/99717 . Beachten Sie, dass die Frage dort auch nach javaws.exe fragt, also technisch gesehen kein Duplikat ...
Hawkeye Parker

Antworten:

75

java.exe ist der Befehl, bei dem auf den Abschluss der Anwendung gewartet wird, bis der nächste Befehl ausgeführt wird. javaw.exe ist der Befehl, der nicht auf den Abschluss der Anwendung wartet. Sie können mit anderen Befehlen fortfahren.

GuruKulki
quelle
2
nicht javaw.exe auch nicht Konsolenausgabe zeigen youtube.com/watch?v=AQUAyJYwJ6Q 00.57 i.imgur.com/TGsm45f.png
barlop
1
Diese Antwort ist falsch. javaw.exe ist , bis das Programm abgeschlossen ist warten. Es kann zum Beispiel sicher als Teil eines .batSkripts verwendet werden und wartet. Wenn Sie jedoch Nicht-Konsolenprogramme manuell starten cmd.exe, cmd.exewird der nicht warten und sofort zur Eingabeaufforderung zurückkehren. Versuchen Sie es mit notepad.exevsping 8.8.8.8
Codeguard
115

java.exeist die Konsolen-App, während javaw.exedie Windows-App (konsolenlos) ist. Sie können nicht haben Consolemit javaw.exe.

Chandra Patni
quelle
4
Ich werde hinzufügen, dass "die Konsolen-App" hier nicht unbedingt bedeutet, dass "dies von einer Konsole ausgeführt wurde", sondern nur, dass java.exeauf die Konsole zugegriffen werden darf. Das Ausführen eines Applets in einem Browser unter Windows wird beispielsweise immer verwendet, java.exeauch wenn meine Java-Systemsteuerung so eingestellt ist, dass das Konsolenfenster ausgeblendet wird oder sogar kein Konsolenfenster gestartet wird .
Ti Strga
Die folgende Antwort scheint mir besser zu sein und enthält Referenzen zur Java-Dokumentation: stackoverflow.com/a/8194750/99717
Hawkeye Parker
40

Der Unterschied besteht im Subsystem , auf das jede ausführbare Datei abzielt.

  • java.exe zielt auf die CONSOLESubsystem ab.
  • javaw.exezielt auf das WINDOWSSubsystem ab.
David Heffernan
quelle
13

Der Befehl javaw.exe ist identisch mit java.exe, außer dass mit javaw.exe kein Konsolenfenster verknüpft ist

Chathuranga Chandrasekara
quelle
6
Technisch korrekter: Mit javawist keine Konsole verbunden . Das Fenster wird nicht unbedingt erstellt (z. B. wenn Sie von einem vorhandenen Konsolenfenster aus oder vollständig im Hintergrund ausgeführt werden).
Joey