在我的Java程序,我创建一个执行一个命令来运行一个批处理文件,这样的过程:从Java执行命令,等待命令完成
try {
File tempFile = new File("C:/Users/Public/temp.cmd");
tempFile.createNewFile();
tempFile.deleteOnExit();
setContents(tempFile, recipe.getText()); //Writes some user input to file
String cmd = "cmd /c start " + tempFile.getPath();
Process p = Runtime.getRuntime().exec(cmd);
int exitVal = p.waitFor();
refreshActionPerformed(evt);
} catch (InterruptedException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
现在,我想什么发生的是命令
refreshActionPerformed(evt);
只有在我调用的批处理文件完成执行后才能运行。但是现在,它在命令提示符打开后立即运行。
我该如何解决这个问题?
请务必阅读并执行*所有* [当Runtime.exec()不会]的建议(http://www.javaworld.com/javaworld/jw-12-2000/jw- 1229-traps.html)。否则,你几乎肯定会遇到“不会”。另外考虑使用'ProcessBuilder'作为1.5+并将参数作为数组传递。 –
我读过Runtime.exec()不会,但坦率地说,我对Java编程完全陌生,我不知道如何实现该文章的建议。 –