Проблема связана с обработкой долговременной задачи в прикладном потоке JavaFX вместо фонового потока.
Переместить обработку в новую задачу и запустить задачу нажатием кнопки.
Task task = new Task() {
@Override
protected Integer call() throws Exception {
try {
Process p = pb.start();
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
// read the output from the command
while((line=stdInput.readLine())!=null){
System.out.println(line);
// To update the textarea
updateMessage(line);
}
}
catch (Exception e1) {
e1.printStackTrace();
}
}
};
Внутри обработчика:
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
Текстовое поле, вы можете связать его как
textarea.textProperty().bind().(Bindings.concat(textArea.getText()).concat(task.messageProperty()));
Для получения дополнительной информации перейдите в Параллельность в JavaFX .
NB Написал код «на лету». Может содержать опечатки.