[JavaFX] Java-Programm nicht mit System.exit(0); beenden?

3 Antworten

Hey,

bei JavaFX Anwendungen sollte zum beenden das Programmes Platform.exit() genutzt werden, welches genau für das beenden von JavaFX Anwendungen da ist.

Mfg Jannick (L1nd)

Woher ich das weiß:eigene Erfahrung

verreisterNutzer  18.05.2022, 14:22

Das Ding ist aber, dass ich danach weiterhin Code ausführen lassen kann. Zwar wird das Fenster an sich geschlossen, aber im Hintergrund läuft der Prozess irgendwie noch. In der IDE kann ich das Programm z. B. noch beenden, weil es wohl nicht richtig beendet ist.

0
ZaoDaDong  24.05.2022, 21:19
@verreisterNutzer

Erst Platform.exit(), danach System.exit(0); So beendet man das JavaFX-Programm korrekt und vollständig.

1
ZaoDaDong  24.05.2022, 22:14
@verreisterNutzer

Keine Ahnung, ist bei mir nicht so. Der Prozess braucht etwas länger, weil JavaFX ein relativ komplexes Konstrukt ist, was auf der JVM ausgeführt wird. Die Maus sollte nicht einfrieren, aber das GUI ist meistens noch etwas länger sichtbar nach dem Beenden.

1

Welchen Exitcode Du beim verlassen eines Programms setzt hat keinen Einfluss auf das Programm selbst.

Der Exitcode ist ein Wert , welcher von einer aufrufenden Shell (bei Bedarf) ausgewertet werden kann.

Exitcodes sind also unabhängig von der verwendeten Shell ein Werkzeug um einen letzten Status an den Aufrufe zu übermitteln.

Die Nummer des Exitcodes kann ein Programmierer frei wählen um dem Aufrufer noch einen "letzten Wunsch" mitzuteilen. (Ob der Aufrufer noch was damit tut, ist Sache des Aufrufers.

In der heutigen Zeit, wo man einfach ein Programm anklickt um es zu starten, spielt der Exitcode keine Rolle.

Beide haben technisch gesehen die gleiche Funktion: Programm schließt sich. Nur 0 oder 1 hat keine wirkliche technische Bedeutung, sondern haben eine Bedeutung zu sagen, warum das Programm geschlossen wurde. 0 benutzt man, wenn man einfach sagen will, dass das Programm normal geschlossen wurde, die 1, -1... benutzt man, wenn man sagen will, dass ein Fehler aufgetreten ist und man deshalb das Programm schließen will/muss.

Übrigens mal im Internet zu gucken ist doch kein großes Problem ;)

https://stackoverflow.com/questions/2434592/difference-in-system-exit0-system-exit-1-system-exit1-in-java


verreisterNutzer  17.05.2022, 19:26
Das Problem dabei ist auch, dass man die Maus ganz kurz nicht bewegen kann (die Maus friert quasi für etwa 1/2 Sekunde ein), da das Programm gerade geschlossen wird.
Aber bei allen anderen Programmen ist dies nicht so. Wenn man das Programm schließt, stockt die Maus gar nicht.
Wie kann ich das in Java auch einbauen?
0
Erzesel  18.05.2022, 19:23
@verreisterNutzer

Das hat... aber nichts mit dem Exitcode zu tun.

Wenn Dein Programm beim beenden die Maus einfrieren lässt, würde ich am ehesten auf nicht oder falsch freigegebene Ressourcen/ Eventhandler tippen. Allerdings sollte kein Programm sich so tief in einen globalen Handler einklinken, das die Ressourcenverwaltung von Windows ein ins "Leere gehendes" Ereignis "reparieren" muss. (Sprich einen verwaisten callback löschen muss).

Wenn ich mal in die Glaskugel schauen würde, fände ich da irgendwas wie einen Hook?

0