2016-05-12 1 views
-2

Je souhaite arrêter un programme Java démarré à l'aide de l'invite de commande sous Windows.Terminer un programme Java A avec un programme Java B

Comment est-il possible de l'arrêter en utilisant un autre programme Java en cours d'exécution?

+0

Voulez-vous qu'il s'arrête lui-même ou un autre programme Java? – Laurel

+0

@Laurel bien sûr que je veux dire par un autre programme Java. J'ai écrit "Cela devrait être avec un programme Java pas manuellement." – SSD

+0

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

Répondre

1

Si vous souhaitez programmer ou mettre fin à arrêter, il suffit de taper dans

System.exit(0);

Bien que System.exit(1); indiquera qu'une « non-zéro » code de sortie a eu lieu ce qui signifie habituellement quelque chose de mal est arrivé. Utilisateur 0 s'il quitte et tout va bien. Utilisez non-zéro (comme 1) pour indiquer qu'il y avait une erreur (comme un fichier inexistant ou quelque chose).

Si vous voulez arrêter le programme java d'un autre programme java, vous devez d'abord obtenir l'ID de processus du programme java. Une fois que ce numéro de processus est connu, vous pouvez le tuer avec un appel système (comme vous le feriez dans un terminal).

Par exemple, si j'avais ce programme Java en cours d'exécution 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; 
     } 
    } 
} 

je pouvais voir son ID de processus (par exemple 123) et tuez-le avec la commande suivante.

$ kill 123 

Une fois cela fait, vous devez trouver un moyen pour lui à la sortie de ces données à un autre programme java après demande. Ensuite, une fois que l'ID de processus est connu, vous devez administrer un appel système ou un shell exec.

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"); 
       } 
     } 
} 

Noeud que toutes les commandes shell ou run.exec doivent intercepter l'exception puisqu'elle est levée. Il doit être dans un bloc try catch ou il ne compilera pas.

Espérons que cela aide.

+0

Merci. mais mon problème est que j'ai un programme Java supposer que A est en cours d'exécution et que je veux tuer ce programme par un autre programme Java B. – SSD

+0

Vérifie-moi les nouvelles modifications. Laissez-moi savoir si cela fonctionne pour vous. – 1N5818

+0

Dans Windows, au lieu de 'kill', vous devez utiliser' Taskkill' sur le shell Windows: https://technet.microsoft.com/en-us/library/bb491009.aspx – 1N5818