Java нужен процесс, чтобы вернуться, когда закончите
Моя проблема заняла бы 2 вопроса, но я буду коротким. Поэтому мне нужно запустить файл bat. Прямо сейчас я делаю это так:
public static void check() throws InterruptedException{
try {
Runtime.getRuntime().exec("cmd /c start build.bat");
Thread.sleep(3000);
} catch (IOException e) {
e.printStackTrace();
}
}
Файл bat запускает компилятор java для компиляции другого файла java и направления сообщений об ошибках в текстовый файл. Вот как выглядит файл bat:
@echo off
javac -Xstdout error.txt MainApp.java
exit
Теперь проблема в том, что мне нужно включить 3-секундный сон, чтобы быть уверенным, что error.txt создан и заполнен ошибками. Это очень неудовлетворительно. Мне либо понадобится возвращаемое значение из файла bat, так что остальная часть программы ждет, пока это не будет сделано, или способ запустить компилятор java из программы и направить сообщения об ошибках в текстовый файл.
Спасибо всем.
1 ответ
Ты можешь использовать Process#waitFor
:
Заставляет текущий поток ждать, если необходимо, пока процесс, представленный этим объектом Process, не завершится
Process p = Runtime.getRuntime().exec("cmd /c start build.bat");
p.waitFor();