2016-05-12 18 views
-2

Ich möchte ein Java-Programm stoppen, das über die Eingabeaufforderung in Windows gestartet wurde.Beenden eines Java-Programms A mit einem Java-Programm B

Wie ist es möglich, es mit einem anderen laufenden Java-Programm herunterzufahren?

+0

Soll es sich selbst oder ein anderes Java-Programm stoppen? – Laurel

+0

@Laurel natürlich meine ich mit einem anderen Java-Programm. Ich schrieb "Dies sollte mit einem Java-Programm nicht manuell sein." – SSD

+0

http://stackoverflow.com/questions/4409731/how-can-i-programatically-close-a-specific-java-application-running-in-windows-f – Idos

Antwort

1

Wenn Sie programmieren möchten zu beenden oder zu stoppen, geben Sie einfach

System.exit(0);

in Obwohl System.exit(1); anzeigt, dass ein „Nicht-Null“ Exit-Code aufgetreten was normalerweise bedeutet, etwas falsch passiert ist. Benutzer 0, wenn es beendet wird und alles in Ordnung ist. Verwenden Sie nicht Null (wie 1), um anzuzeigen, dass ein Fehler aufgetreten ist (wie eine nicht vorhandene Datei oder etwas).

Wenn Sie das Java-Programm von einem anderen Java-Programm beenden möchten, müssen Sie zuerst die Prozess-ID des Java-Programms abrufen. Sobald diese Prozess-ID bekannt ist, können Sie sie mit einem Systemaufruf (genau wie in einem Terminal) beenden.

Zum Beispiel, wenn ich Ausführen dieses Java-Programm habe indefinitly:

import java.lang.management.ManagementFactory; 
public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello, World"); 
     System.out.println(ManagementFactory.getRuntimeMXBean().getName()); 
     while (true) { 
       int i = 0; 
     } 
    } 
} 

Ich konnte sehen, es Prozess-ID ist (zum Beispiel 123) und es mit dem folgenden Befehl töten.

$ kill 123 

Sobald dies erledigt ist, müssen Sie eine Möglichkeit für sie ausgeben, diese Daten zu einem anderen Java-Programm finden, nachdem sie darum bittet. Sobald die Prozess-ID bekannt ist, würden Sie einen Systemaufruf oder eine Shell-Exec verwalten.

import java.lang.* ; 

public class Shell 
{ 
     public static void main(String[] args) 
     { 
       try { 
         String cmd = "kill 123"; 
         Runtime run = Runtime.getRuntime(); 
         Process pr = run.exec(cmd) ; 
       } catch (Exception ex) { 
         System.out.println("SOMETHING WENT WRONG"); 
       } 
     } 
} 

Knoten, die alle Shell-Befehle oder run.exec müssen die Ausnahme abfangen, da sie geworfen wird. Es muss sich in einem try-catch-Block befinden oder es wird nicht kompiliert.

Hoffe, das hilft.

+0

Danke. aber mein Problem ist, ich habe ein Java-Programm angenommen A, das ausgeführt wird, und ich möchte dieses Programm von einem anderen Java-Programm B. – SSD

+0

überprüfen Sie mich neue Bearbeitungen. Lassen Sie mich wissen, ob das für Sie funktioniert. – 1N5818

+0

In Windows, anstelle von 'kill', müssen Sie' Taskkill' auf Windows-Shell verwenden: https://technet.microsoft.com/en-us/library/bb491009.aspx – 1N5818