Ich habe ein Problem nach der JRE-Aktualisierung.
Wenn ich eine gestartete Java-Anwendung habe und den Systemneustart initiiere - Windows kann diese Java-Anwendung nicht automatisch stoppen und erhalte folgende Meldung: "Dieses Programm verhindert den Neustart von Windows". Wenn ich Abbrechen drücke, könnte ich sehen, dass die Java-Anwendung, die den Neustart verhindert, hängen bleibt. Dieses Problem betrifft sowohl meine Java-Anwendungen als auch solche Anwendungen wie jconsole.
Vor der JRE-Aktualisierung funktioniert alles auf JRE 1.6.0_26 . Ich hatte dieses Problem zuerst auf JRE 1.6.0_36 . Aber es passiert auch am 1.6.0_39.
P.S: Ich habe Windows Server 2008 R2 Interprise
Hat jemand das gleiche Problem oder kann er vorschlagen, was in dieser Situation zu tun ist? Danke.
Aktualisierung: Ich habe folgendes Addhook implementiert:
%Vor%Danach werden Anwendungen mit einem solchen Add-In normalerweise beim Systemneustart geschlossen, aber ich habe herausgefunden, dass, wenn wir nur die Anwendung schließen (durch Drücken von exit oder "x") Java VM nicht beendet wird (wir können javaw process in taskmgr sehen). p>
Aus der Log-Datei konnte ich sehen, dass das Programm niemals die dispose () -Funktion verlässt. Im Fall, wenn ich dispose () kommentiere und nur System.exit (0) belasse Java VM noch nicht beenden kann.
Update 2: Ticket wurde für dieses Problem erstellt. Und wir erhielten folgende Antwort von Oracle: "Problem reproduziert und bestätigt."
Dieses Problem wurde von Oracle behoben . Fix wird in der kommenden Version von JRE (1.6.0_42?) Enthalten sein.
Als Workaround für Ihre Anwendung können Sie addhook verwenden. Etwas wie das:
%Vor%Sie sollten Runtime.halt (0) anstelle von System.exit (0) verwenden, weil Java Machine in der aktuellen JRE-Version nicht mehr nach System.exit (0) stoppen soll.
matts, Dies geschieht für alle Java-Anwendungen, es wurde mit einem Server mit nur Betriebssystem 2008 und JRE 6U37 getestet. Wenn wir die Java-Systemsteuerung starten und dann versuchen, den Server neu zu starten, erhalten wir die Windows-Nachricht.
Wenn die App minimiert ist, erhalten wir die Nachricht nicht.
Meldung "Dieses Programm verhindert den Neustart von Windows"
Wir haben die Option "Neustart erzwingen" oder "Abbrechen", wenn Sie die Option Abbrechen wählen, das Java Control Panel hängt und der javaw.exe-Prozess mit 25% CPU läuft, dies ist auf einem Quad-Prozessor-Server, also Ich nehme an, auf einem einzigen Prozessor würde dies bei 100% CPU laufen.
Oliver
Ich kann mir wenige Dinge vorstellen:
1) Haben Sie eine shutdownhook () implementiert, möglicherweise versuchen, etwas zu tun, wenn es ein Signal QUIT vom Betriebssystem erhält?
2) Führen Sie einen Thread-Dump (Strg + Umbruch für Windows - pls google?) durch, wenn Ihre Anwendung hängt und überprüfen Sie, was im Inneren passiert. Sie sollten einen Hinweis bekommen.
3) Nicht-Daemon-Threads, falls vorhanden, die in der Java-Anwendung noch aktiv sind, können verhindern, dass JVM ebenfalls beendet wird.