Wie kann man alle Java-Prozesse finden und beenden, um einen Neustart des Betriebssystems zu vermeiden, wenn Java automatisch installiert wird?

25029
030

Einführung

Um einen Neustart oder das Auftreten eines Popup-Fensters zu vermeiden, das bei einer unbeaufsichtigten Installation einer neueren Java-Version das Betriebssystem neu booten muss, müssen alle Prozesse, die Java verwenden, beendet werden.

Beenden Sie einfach java.exe, indem Sie den folgenden Befehl ausführen:

taskkill /im java.exe /f

löst das Problem nicht, da einige Prozesse weiterhin Java verwenden, z. B. JDBC, Webbrowsers, Tomcat und Eclipse.

Wenn alle Prozesse, die Java verwenden, vor der unbeaufsichtigten Installation von Java beendet werden, wird das Betriebssystem nicht neu gestartet.

Der Ansatz, einzelne Prozesse, die Java verwenden, zu beenden, ist keine dauerhafte Lösung, als ob in Zukunft ein anderes Programm installiert wird, das Java verwendet und nicht beendet wird.

Frage

Wie finden Sie alle Prozesse, die Java verwenden, und töten Sie alle, um zu vermeiden, dass das Betriebssystem neu gestartet wird. Andernfalls wird ein Popup-Fenster angezeigt.

2
Eine Möglichkeit wäre, eine Liste aller Prozesse (laufende Prozesse) abzurufen und zu entschlüsseln, ob sie Java-basiert sind, und dann die Java-basierten Prozesse zu beenden. Sie benötigen also einen Befehl, der bestimmt, ob ein Prozess auf Java basiert. Ich bin gesegnet, weil ich keine Java-Programme zum Testen habe, aber vielleicht zeigt diese http://gnuwin32.sourceforge.net/packages/file.htm, ob ein Prozess auf Java basiert. Ansonsten brauchen Sie eine andere Methode. barlop vor 10 Jahren 1
Das Programm wurde installiert. `file --help` wurde ausgeführt und eine Reihe von Befehlen erscheint. Welche davon sollte verwendet werden, um festzustellen, welche Prozesse Java verwenden? `file / path / to / java` führt zu: C: \ Programme \ Java \ jdk1.8.0_05 \ bin \ java.exe; PE32 + ausführbar für MS Windows (Konsole) Mono / .Net-Assembly`. 030 vor 10 Jahren 0
Das bedeutet, Java ist nicht in Java geschrieben. Und das macht Sinn, dass java.exe nicht in Java geschrieben wurde. barlop vor 10 Jahren 0
Dasselbe Ergebnis für `Apache Directory Studio` (C: \ Programme \ Apache Directory Studio \ Apache Directory Studio.exe; ausführbare PE32 + -Datei für MS Windows (GUI) Mono / .Net-Assembly) und` Tomcat` (C: \ Programme) \ Apache Software Foundation \ apache-tomcat-8.0.8 \ bin \ tomcat8.exe; ausführbare PE32-Datei für MS Windows (Konsole (Mono / .Net-Assembly)), die weder Java-basiert noch Java verwenden, während Java zum Ausführen dieser Programme erforderlich ist . 030 vor 10 Jahren 0
Vielleicht sind sie im Grunde keine Java-Anwendungen. http://www.coderanch.com/t/477457/vc/Isn-Main-Parts-Eclipse-Written "eclipse.exe ist eine Windows-App, die die JVM über JNI hostet. Tatsächlich könnte dies auch für Java gelten. exe, javac.exe und die meisten anderen * .exe-Dateien in java_home / bin! " "Dies könnte etwas Licht ausstrahlen: http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/invocation.html#wp9502" Das könnte der Grund sein, warum es anscheinend keine java.exe verwendet Ich stelle jedoch fest, dass Sie der Meinung waren, Eclipse habe Java verwendet. Ich weiß also nicht, was dort vor sich geht. Warum unterscheidet es sich für Eclipse und Apache DS? barlop vor 10 Jahren 0
Vielleicht könnten Sie in stackoverflow fragen, ob Eclipse und Apache ds Java grundlegend anders verwenden, so dass der Dateibefehl sie anders sieht. Und was ist der Unterschied in der Verwendung von Java, um diesen Unterschied mit dem Dateibefehl zu bewirken barlop vor 10 Jahren 1
http://stackoverflow.com/questions/24228467/gnuwins-file-command-indicates-programs-are-net-based-while-these-require-jav 030 vor 10 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/15117/discussion-between-barlop-and-utrecht). barlop vor 10 Jahren 0

1 Antwort auf die Frage

4
Zdzisiek

Wie Sie den Prozess beenden, hängt davon ab, welches Betriebssystem Sie verwenden. Um Java-Prozesse zu finden, können Sie jedoch den jcmd -lBefehl verwenden. Dieser Befehl listet alle Java-Prozesse auf Ihrem lokalen Computer auf.

Dieser Befehl zeigt an, dass Eclipse Java verwendet. Wenn Eclipse beendet wurde, zeigt der Befehl an, dass keines der Programme Java verwendet, während Firefox ausgeführt wird und Apacheds weiterhin Port 10389 überwacht. 030 vor 10 Jahren 0
Dieser Befehl zeigt an, dass einige Prozesse Java verwenden. Es kann nicht alle Prozesse anzeigen, die Java verwenden. 030 vor 10 Jahren 0
Dies liegt daran, dass "jcmd" Prozesse zeigt, die in diesem Moment funktionieren. Firefox startet Java nur, um Applet auszuführen und anschließend Java nicht zu verwenden. Ich kenne keine universelle Methode, um alle Prozesse zu finden, die gelegentlich Java verwenden. Aber ein Prozess, der Java in diesem Moment nicht verwendet, sollte die Installation einer neuen Java-Version nicht blockieren (aber ich teste das nicht). Zdzisiek vor 10 Jahren 0