Comment trouver L'id de processus D'un processus Java en cours d'exécution sur Windows? Et comment tuer le processus seul?
je veux tuer le processus Java particulier dans Windows, comme dans Linux ( ps -aux
pour obtenir processid et puis kill processid
pour tuer le processus).
7 réponses
vous pouvez utiliser l'utilitaire jps
qui est inclus dans le JRE pour trouver l'identifiant de processus D'un processus Java. La sortie va vous montrer le nom du fichier JAR exécutable ou le nom de la classe principale.
ensuite, utilisez le Gestionnaire des 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 des tâches. Vous activez les PID et ligne de commande colonnes View -> Select Columns
et êtes alors 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 facilement le tuer par le Gestionnaire des tâches
JPS
vous donnera tous les processus java
cela fonctionnera même quand il y a plusieurs instances de jar est 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 temps D'exécution WMIC & Java de Window pour localiser et tuer le processus.
Partie 1: vous devez mettre une sorte d'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, assurez-vous d'inclure la chaîne. Supposons que vous démarriez à partir de Java, faites ce qui suit:
Runtime.getRuntime().exec(
"C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);
Partie 3: tuer le processus, l'utilisation de la Fenêtre WMIC. Assurez-vous juste que votre application a été lancée contenant votre id d'en haut:
Runtime.getRuntime().exec(
"wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
dans windows XP et plus tard, il y a une commande: tasklist qui liste tous les identificateurs de processus.
Pour le meurtre d'un processus dans Windows, voir:
Vraiment tuer un processus dans Windows | Stack Overflow
vous pouvez exécuter des commandes OS en Java par:
Runtime.getRuntime().exec("your command here");
si vous avez besoin de gérer la sortie d'une commande, Voir exemple: en utilisant Runtime.exec() en Java
spécifique à Windows.
Je faisais face au même problème où je dois tuer un programme java spécifique en utilisant taskkill. Quand j'ai lancé le programme java, tasklist montrait le même programme avec un nom D'Image défini comme java.EXE.
Mais le tuer en utilisant taskkill /F java.exe
arrêtera toutes les autres applications java autre que celle prévue qui n'est pas nécessaire.
donc j'exécute le même programme java en utilisant:
start "MyProgramName" java java-program..
ici la commande start ouvrira une nouvelle window et exécutez le programme java avec le titre de window défini à MyProgramName.
maintenant pour tuer ce programme java utiliser la commande suivante taskkill:
taskkill /fi "MyProgramName"
votre programme Java sera tué seulement. Le repos ne sera pas affecté.