Wie kann ich ein Programm automatisch erneut öffnen, wenn es beendet/geschlossen wird/abstürzt?

Wie kann ich ein Programm automatisch erneut öffnen, wenn es beendet/geschlossen wird/abstürzt?

Ich habe ein Java JAR-Programm erstellt, das ständig auf dem Computer ausgeführt werden muss. Wenn das Programm geschlossen wird (entweder weil der Benutzer es geschlossen hat oder weil es abgestürzt ist), muss ich das Programm erneut öffnen.

Ich habe es bereits geschafft, es automatisch zu starten, wenn ich mich am Computer anmelde, aber wie kann ich es am Leben erhalten?

Ich bin mir nicht sicher, ob das eine Programmierfrage sein sollte oder nicht. Schließlich ist das automatische Starten von Programmen keine Programmierfrage, daher dachte ich, dass es ein ähnlicher Fall sein könnte, sie persistent zu machen.

Antwort1

Legen Sie dies in eine .bat/ .cmd-Datei. Passen Sie den javaAufruf an Ihre Bedürfnisse an. Starten Sie die cmd-Datei vom Autostart aus. Stellen Sie sicher, dass Sie verwenden javaund nicht javaw, da Sie warten möchten, bis es fertig ist, bevor Sie es das nächste Mal starten.

:start
"C:\Program Files\java\bin\java" -jar my.jar
goto start

Antwort2

Es gibt mehrere Programme, die Sie hierfür verwenden können. Eines davon heißt Control Running Programs (CRP). Dies ist ein sehr gutes Tool, wenn dieses Problem auftritt.

Hier ist ein Link dazu............

https://www.raymond.cc/blog/keep-application-running-by-automatically-rerun-when-closed/

Ich hoffe, das beantwortet Ihre Frage. Wenn nicht, lassen Sie es mich wissen.

Antwort3

Bei Stack Overflow gibt es eine Frage dazu, wie man eine .bat-Datei in einen Dienst umwandelt:

https://stackoverflow.com/a/13294293

Die beste Antwort auf diese Frage ist die Verwendung von nssm (http://nssm.cc/). Wenn Ihre Bat-Datei in einen Dienst umgewandelt wird, wird sie beim Schließen automatisch neu gestartet.

Die Verwendung für Ihren Zweck würde in einer Administrator-Eingabeaufforderung etwa wie folgt aussehen:

nssm install yourservicename yourbatfile.bat
nssm start servicename
nssm stop servicename

verwandte Informationen