我发现了非常危险的错误。
我有一个代码:
private static void run(String command)
{
try {
Process proc = Runtime.getRuntime().exec(command);
proc.waitFor();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我运行下一行自动编译应用程序
run("C:\\Ant\\bin\\ant.bat -f " + projectPath + " release");
当它第一次编译时,一切都很好,但是当我再次执行时,ant冻结并且proc.waitFor()永远不会完成。另外,在编译之后,我通过ant
清理目录run("C:\\Ant\\bin\\ant.bat clean -f " + projectPath);
首先,我认为我在某处犯了错误,但没有。更改run()后:
private static void run(String command)
{
try {
Process proc = Runtime.getRuntime().exec(command);
BufferedReader r = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String tmp;
while((tmp = r.readLine()) != null)
{
//System.out.println("> " + tmp);
}
proc.waitFor();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
它有效!因此,当禁用日志记录时,没有任何工作和经文,当它启用时,应用程序正常工作,蚂蚁完成。有人为什么会这样,以及如何修复它?