Я пытаюсь выполнить его через:
Process process = Runtime.getRuntime().exec(spark_cmd);
без везения. Команда, запущенная через оболочку, запускает мое приложение, которое завершается успешно. Запуск его через exec запускает процесс, который вскоре умирает и ничего не делает. Когда я пытаюсь
process.waitFor();
он висит и ждет вечно. Настоящая магия начинается, когда я пытаюсь что-то прочитать из процесса:
InputStreamReader isr = new InputStreamReader(process.getErrorStream());
BufferedReader br = new BufferedReader(isr);
Для этого я запускаю поток, который читает поток в цикле while:
class ReadingThread extends Thread {
BufferedReader reader;
Wontekk(BufferedReader reader) {
this.reader = reader;
}
@Override
public void run() {
String line;
try {
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Приложение запускается, что-то делает и зависает. Когда я прерываю свое приложение, приложение spark просыпается (??????????) и завершает оставшуюся работу. У кого-нибудь есть разумное объяснение происходящему?
Спасибо