如何杀死java中生成的Ant程序

时间:2012-07-18 20:53:20

标签: java windows ant processbuilder

从Windows中销毁衍生的ant进程无法正常工作。 Unix变种这个工作正常,但从Windows无法正常工作。代码段如下。返回代码是正确的(1)生成的进程继续执行直到完成。只有窗户上的问题。有什么想法吗?

        ProcessBuilder build = new ProcessBuilder();
    List<String> list = build.command();
    list.add("cmd");
    list.add("/C");
    list.add("ant");
    list.add("-f");
    list.add("HelloWorld.xml");

    try {
        Process p = build.start();          
        Thread.sleep(5000);
        p.destroy();        
        int i = p.waitFor();
        System.out.println(i);
    } catch (Exception e) {
        System.out.println(e);
    }

2 个答案:

答案 0 :(得分:2)

问题是Process.destroy不会杀死孙子进程。自2002年以来已经开通了bug

无论如何,为什么要用cmd /c start生成一个新的提示来调用Ant?如果这不是要求,只需致电ant.bat -f HelloWorld.xml

更新

ant.bat will也会产生子进程。有workaround with taskkill可能会有帮助。

答案 1 :(得分:0)

通过混合使用wmic(以获取Windows进程列表)和taskkill(强制终止正在运行的进程)解决了问题。