В моей 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);
запускается только после того, как пакетный файл, который я вызвал, завершил выполнение. Но сейчас он запускается сразу после открытия командной строки.
Как я могу это исправить?
ProcessBuilder
для 1.5+ и передачи аргументов в виде массива. - person Andrew Thompson   schedule 22.06.2011