使用taskkill执行jar文件时无法终止进程

时间:2012-07-24 10:45:42

标签: java eclipse swing pid

我在java swing应用程序中触发了exe。从ECLIPSE IDE运行应用程序时,我可以使用exe终止"taskkill /PID ProcessID "。但是当我尝试通过批处理文件为swing应用程序运行jar file时,exe不会因为我无法获取进程ID而终止。我使用的是Windows XP 32位。任何帮助将不胜感激

String sDosCommand = "cmd /c tasklist /FI " + "\"" + "IMAGENAME eq " + sProcessName + "\"" ;
Process process = Runtime.getRuntime().exec(sDosCommand ); 

此代码(经过修改以获得一个特定进程的process ID)为我提供了Process ID,而我在Taskkill命令中使用了类似的执行

谢谢和问候 Arun Raj

2 个答案:

答案 0 :(得分:1)

我假设您正在使用ProcessBuilder启动外部应用程序。如果不是,请考虑使用该类及其start()方法启动外部应用程序,如Javadoc中所述。

调用start()后,您将获得Process,您可以在其上调用destroy()来终止外部应用程序。

Process p = new ProcessBuilder("myCommand", "myArg").start();
...
p.destroy(); // this kills the command "myCommand"

答案 1 :(得分:0)

我弄清楚问题出在哪里。我正在从批处理文件中触发应用程序jar。该批次还修改了环境变量(准确地说是PATH),这阻止了我执行TASKKILL命令。我对批处理文件稍作修改以包含PATH环境变量。这解决了我的问题。

感谢所有人的帮助。 Arun Raj