Я выполняю команду, которая ничего не возвращает, вместо этого она создает zip-файл в каталоге. Всякий раз, когда возникают проблемы с выполнением команды, приложение переходит в состояние зависания. Я видел много информации о том, что я должен также удалить свой ErrorStream, но ни один из кодов, которые я уже видел в StackOverflow, не смог помочь мне в моем случае использования.
Пожалуйста, обратите внимание на мой код ниже.
В коде я запускаю команду, а затем Java-приложение вводит идентификатор и пароль в необходимые поля, а затем начинается программа.
try {
process = Runtime.getRuntime().exec(SomeCommand);
try (Writer writer = new OutputStreamWriter(process.getOutputStream());
Reader reader = new InputStreamReader(process.getInputStream()) ) {
CharBuffer buf = CharBuffer.allocate(80);
int tries = 2;
while (process.isAlive()) {
while (reader.ready() && reader.read(buf) > 0) {
System.out.println(buf.flip());
buf.clear();
}
tries--;
if (tries == 0) {
writer.write(p);
writer.flush();
}
if (tries == 1) {
writer.write(h);
writer.flush();
}
while (!reader.ready()) {
Thread.sleep(1000);
if (!process.isAlive ()) {
// Code to update UI to reflect progress
process.destroy();
break;
}
}
}
}
} catch (Exception e) {
SubmitController.logger.warningMessage("Error>>> CommandController");
progressIndicator.isVisible();
}