如何杀死从Java内部产生的ant程序

窗口销毁产卵的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); } 

问题是Process.destroy不杀死进程孙子。 自2002年以来,有一个错误 。

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

UPDATE

ant.bat will产生子进程。 taskkill有一个解决方法可能会有所帮助。

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