Wie zu Töten Java-Prozess in Windows, OHNE zu töten javaw.exe?
Ich habe eine externe Windows .exe-Datei, die tatsächlich Java-Anwendung: Laufen die .exe startet javaw.exe, die wiederum läuft die Java-Anwendung.
Ich nicht geschrieben habe, dass Anwendung und haben keinen Zugriff über eine API. Ich muss in der Lage sein, um es zu töten, aber. So jetzt ich töte einfach den Windows-Prozess javaw.exe, was ist gut für eine test-Maschine läuft nur an, dass Java-Anwendung, aber wenn ich brauche eine feinere Granularität, ich kann momentan nicht tun.
Meine Suche ergab Vorschlägen, wie Sysinternal Process Explorer oder die jps-Befehl in das JDK, aber in die Zielsysteme, für die ich beabsichtige, stellen Sie das Skript bereit, weder JDK noch Sysinternal Process Explorer ausgeführt werden kann.
Gibt es eine andere Weise, die nicht erfordern ein externes tool? Tut javaw.exe über einen Schalter oder über die Befehlszeile-option, die Listen von Java-Prozessen? Gibt es eine JRE-version der jps?
Dank.
InformationsquelleAutor Android Eve | 2010-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde noch vorschlagen, einfach die Tötung der javaw.exe.
Ich nicht sehen kann, der Nachteil, denn es ist der Prozess, den Sie töten wollen, nachdem alle.
Denken Sie daran, dass, wenn Sie laufen mehrere Anwendungen auf dem Computer, sollten Sie jeweils über eine eigene JVM-Instanz. So können Sie immer noch töten die bestimmte Anwendung, wenn Sie benötigen.
Kannst du nicht schauen, die im Task-Manager die Registerkarte "Anwendungen", dann mit der rechten Maustaste auf das entsprechende Programm und hit Gehen Sie Zu Verarbeiten. Das gibt Ihnen das Recht javaw.exe.
Was Sie brauchen, ist ein tool wie Sysinternals Process Explorer. Es wird Ihnen erlauben, zu sehen, die übergeordneten Prozesse und zeigen Sie die vollständige Befehlszeile übergeben javaw.exe.
Der Nachteil ist, dass auf einem server, den Sie auf die anderen Java-apps durch abtöten der gesamten JVM.
InformationsquelleAutor mikera
Dem JDK (und möglicherweise die JRE -) Schiff mit einem Dienstprogramm namens " jps die Liste aller Java-Prozesse, sondern auch sagen, die Main-Klasse derzeit ausgeführt, die JVM. Wenn JMX/JConsole ist nicht eine option, einfach das Parsen der Ausgabe von "jps -ml" und die Tötung der entsprechende Prozess kann arbeiten.
InformationsquelleAutor basszero
Wenn Sie töten wollen eine ganze JVM, nur töten die javaw.exe Prozess. Innerhalb einer JVM können mehrere Java - threads aber es gibt keine Möglichkeit zum stöbern in einer JVM und kündigen einen thread, es sei denn, die Entwickler der Anwendung eine Methode, dies zu tun.
InformationsquelleAutor Jim Garrison
Basierend auf Ihren Kommentar, mehrere javaw.exe Programme laufen, und Sie brauchen, um zu wissen, was man töten.
Möchten Sie vielleicht versuchen, eine Verbindung zu jedem der Prozesse mit JConsole und untersuchen Sie die JVM. Möglicherweise gibt es genug Hinweise, um zu bestimmen, welche von Ihnen zu töten. Nachdem Sie ermittelt haben, das Profil Ihrer Anwendung, Sie sollten in der Lage sein, um ein Skript für die Logik, um es leichter in die Zukunft (benutze JMX um die meisten der Informationen, die von JConsole).
InformationsquelleAutor Jim Rush
Wenn die ausführbare Datei startet javaw dann beendet, ohne weitere Informationen, es scheint, dass Sie müssen verwenden Sie Ihre scripting-Sprache, um eine Momentaufnahme der Laufenden Prozesse auf der Maschine, bevor Sie die ausführbare Datei und nach der ausführbaren Datei beendet hat. Dann werden Sie in der Lage ableiten, die die neue javaw-Prozess. Welche scripting Sprache verwenden Sie?
InformationsquelleAutor Fredrick Pennachi
Nur ein anderer Ansatz: wenn du das jdk, gibt es ein Programm namens jvisualVM in den bin-Ordner. Es hat nette info über jede laufende JVM Kontext. Eines der Dinge, die Sie sehen können, ist die PID des VM, die ich verwenden, um den Prozess in Windows mit dem task-manager (unter windows PID nicht standardmäßig angezeigt, aber Sie können leicht aktivieren Sie die Spalte, indem Sie in der Ansicht -> Spalten anzeigen )
InformationsquelleAutor Ward