我想杀死Windows中的特定Java进程,就像在Linux中( ps -aux
获取processid,然后kill processid
来ps -aux
进程)。
您可以使用JRE中包含的jps
实用程序来查找Java进程的进程ID。 输出将显示可执行JAR文件的名称或主类的名称。
然后使用Windows任务管理器来终止该进程。 如果你想在命令行上使用它,请使用
TASKKILL /PID %PID%
您也可以使用任务管理器找到Java程序的PID。 您启用PID和命令行列View -> Select Columns
,然后能够找到正确的过程。
你的结果会是这样的:
设置好jdk的路径后,使用JPS
。然后你可以通过任务管理器将其杀死
JPS
会给你所有的java进程
即使有多个jar实例正在运行,这也可以工作
wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
我找到的解决方案非常简单。 使用Window的WMIC和Java的运行时找到并杀死进程。
第1部分:您需要在应用程序的启动命令行中添加某种标识符。 例如:
String id = "com.domain.app";
第2部分:当您运行您的应用程序时,请确保包含字符串。 假设您从Java内部启动它,请执行以下操作:
Runtime.getRuntime().exec( "C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main" );
第3部分:要杀死进程,请使用Window的WMIC。 只要确保你的应用程序已经开始包含你的ID从上面:
Runtime.getRuntime().exec( "wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate" );
在Windows XP和更高版本中,有一个命令: tasklist列出所有进程ID。
要在Windows中杀死进程,请参阅: https : //stackoverflow.com/a/49990/92063
您可以通过以下方式在Java中执行OS命令:
Runtime.getRuntime().exec("your command here");
如果需要处理命令的输出,请参阅示例: 在Java中使用Runtime.exec()
这是特定于Windows的。 我面临着同样的问题,我必须杀死一个特定的Java程序使用taskkill。 当我运行java程序时,tasklist显示的图像名称设置为java.exe。 但使用taskkill /F java.exe
杀死它将停止除了预期不需要的以外的所有其他Java应用程序。
所以我运行相同的Java程序使用:
start "MyProgramName" java java-program..
这里start命令会打开一个新窗口,并运行窗口标题设置为MyProgramName的java程序。
现在要杀死这个Java程序使用以下taskkill命令:
taskkill /fi "MyProgramName"
你的Java程序只会被杀死。 休息将不受影响。