Я попытался запустить .sh-файл из моего java-кода. Я видел подобные вопросы (How to run Unix shell script from Java code?) и пробовал ответы, которые там были написаны. Тем не менее, я ожидаю, что значение завершения процесса будет 0 (выгрузить нормально), в то время как на самом деле я получил 127. Вот мой код:Запуск .sh от Java-кода
public int performATRs() throws IOException{
String[] command = {"sh", "/ThematicAnalysis/flexiTerm/FlexiTerm.sh"};
Process process = Runtime.getRuntime().exec(command);
InputStream inputStream = process.getInputStream();
InputStreamReader streamReader = new InputStreamReader(inputStream);
BufferedReader bufReader = new BufferedReader(streamReader);
try{
process.waitFor();
System.out.println("Waiting...");
System.out.println("Returned Value :" + process.exitValue());
}catch(InterruptedException e){
System.out.println(e.getMessage());
}
while(bufReader.ready())
System.out.println(bufReader.readLine());
return process.exitValue();
}
Я попытался запустить FlexiTerm.sh из моего кода Java. Он работает, когда я запускаю его с терминала. Большое спасибо за вашу помощь :)
Не работает означает? Нет вывода или вы получаете какое-либо исключение? – TheCodingFrog
Благодарим вас за ответ. Когда я попытался вернуть process.exitValue(), я получил 1 вместо 0 (нормальное завершение) @ my-thoughts – bohr
Вы используете только один поток для этого кода, а затем блокируете этот единственный поток, вызывая 'waitFor() 'в какой-то момент, пока ваш процесс не сможет передать вам какую-либо информацию. Рассмотрим 1) получение BufferedReader для потока ошибок, а также входного потока, начать чтение из потоков ** в потоках своих собственных ** и ** перед вызовом 'waitFor()'. –