Запуск другой программы из Java-приложения
Вот фрагмент кода, запускающий стороннюю программу из Java-приложения, перехватывающий ее InputStream и выводящий оный в TextArea...
...
builder = new ProcessBuilder(model.getProjectDir() + File.separator + executable);
builder.directory(model.getProjectDir()) ;
builder.redirectErrorStream(true);
process = builder.start();
BufferedReader reader = new BufferedReader (new InputStreamReader (process.getInputStream()));
processLog = new StreamingTextArea(reader);
logFrame = new JFrame (EXECUTABLE_LOG);
JScrollPane scroller = new JScrollPane(processLog, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS) ;
logFrame.setContentPane(scroller);
logFrame.pack();
logFrame.setVisible(true);
processLog.run();
...
интересует следующее - под Windows данный фрагмент выолняется как положено, а под Linux - нет. Т.е. по запуску открывается фрэйм с TextArea, но TextArea остается пустой, процесс не появляется в списке процессов, выполнение не происходит, Exception-ов тоже нет.
В чем причина?
Upd. Порешалось. Проблема оказалась в неправильных путях к выполнимым модулям. Всем спасибо
...
builder = new ProcessBuilder(model.getProjectDir() + File.separator + executable);
builder.directory(model.getProjectDir())
builder.redirectErrorStream(true);
process = builder.start();
BufferedReader reader = new BufferedReader (new InputStreamReader (process.getInputStream()));
processLog = new StreamingTextArea(reader);
logFrame = new JFrame (EXECUTABLE_LOG);
JScrollPane scroller = new JScrollPane(processLog, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS)
logFrame.setContentPane(scroller);
logFrame.pack();
logFrame.setVisible(true);
processLog.run();
...
интересует следующее - под Windows данный фрагмент выолняется как положено, а под Linux - нет. Т.е. по запуску открывается фрэйм с TextArea, но TextArea остается пустой, процесс не появляется в списке процессов, выполнение не происходит, Exception-ов тоже нет.
В чем причина?
Upd. Порешалось. Проблема оказалась в неправильных путях к выполнимым модулям. Всем спасибо
