Je veux tuer le processus Java particulier dans Windows, comme dans Linux (ps -aux
pour obtenir processid, puis kill processid
pour tuer le processus).
Vous pouvez utiliser l'utilitaire jps
qui est inclus dans l'environnement JRE pour rechercher l'ID de processus d'un processus Java. La sortie vous montrera le nom du fichier JAR exécutable ou le nom de la classe principale.
Ensuite, utilisez le gestionnaire de tâches Windows pour terminer le processus. Si vous voulez le faire en ligne de commande, utilisez
TASKKILL /PID %PID%
Vous pouvez également trouver le PID d'un programme Java avec le gestionnaire de tâches. Vous activez lesPIDet Ligne de commande columns View -> Select Columns
et êtes ensuite en mesure de trouver le bon processus.
Votre résultat sera quelque chose comme ceci:
Après avoir défini le chemin de votre jdk, utilisez JPS
. Ensuite, vous pouvez le tuer par le gestionnaire de tâches.JPS
vous donnera tous les processus Java
Cela fonctionnera même s'il y a plusieurs instances de jar en cours d'exécution
wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
La solution que j'ai trouvée est très simple. Utilisez le runtime WMIC et Java de Window pour localiser et tuer le processus.
Partie 1: Vous devez insérer un identifiant dans la ligne de commande de démarrage de votre application. Par exemple. quelque chose comme:
String id = "com.domain.app";
Partie 2: lorsque vous exécutez votre application, veillez à inclure la chaîne. Disons que vous le démarrez à partir de Java, procédez comme suit:
Runtime.getRuntime().exec(
"C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);
Partie 3: Pour arrêter le processus, utilisez le code WMIC de Windows. Assurez-vous simplement que votre application a été lancée et qu'elle contient votre identifiant ci-dessus:
Runtime.getRuntime().exec(
"wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
Dans Windows XP et les versions ultérieures, il existe une commande: tasklist qui répertorie tous les ID de processus.
Pour tuer un processus sous Windows, voir:
Tuer vraiment un processus dans Windows | Débordement de pile
Vous pouvez exécuter des commandes OS en Java en:
Runtime.getRuntime().exec("your command here");
Si vous devez gérer le résultat d'une commande, consultez l'exemple: en utilisant Runtime.exec () en Java
Ceci est spécifique à Windows . J'étais confronté au même problème dans le cadre duquel je devais tuer un programme Java spécifique à l'aide de taskkill. Lorsque j'exécutais le programme Java, Tasklist affichait le même programme avec le nom d'image défini en tant que Java.exe . Mais le supprimer à l'aide de taskkill /F Java.exe
arrêtera toutes les applications Java autres que celles prévues ne qui ne sont pas requises.
Je lance donc le même programme Java en utilisant:
start "MyProgramName" Java java-program..
Cette commande de démarrage ouvrira une nouvelle fenêtre et exécutera le programme Java avec le titre de la fenêtre défini sur MyProgramName.
Maintenant, pour tuer ce programme Java, utilisez la commande taskkill suivante:
taskkill /fi "MyProgramName"
Votre programme Java sera tué seulement. Le repos ne sera pas affecté.