У меня есть код, который работает и успешно выводит вывод, если я выполняю что-то вроде «dir», но не выводя результат, если я запускаю «java -version» или другую команду из Ява. Пожалуйста, помогите:ProcessBuilder не отображает выходной поток, если он java
public static void execJob(){
try{
ProcessBuilder pb = new ProcessBuilder("C:\\myPrograms\\jdk1.7.0_79\\bin\\java.exe", "-version");
pb.directory(new File("src"));
Process process = pb.start();
IOThreadHandler outputHandler = new IOThreadHandler(process.getInputStream());
outputHandler.start();
process.waitFor();
System.out.println(outputHandler.getOutput());
}catch(Exception e) {
System.out.println(e.toString());
}
}
private static class IOThreadHandler extends Thread {
private InputStream inputStream;
private StringBuilder output = new StringBuilder();
IOThreadHandler(InputStream inputStream) {
this.inputStream = inputStream;
}
public void run() {
Scanner br = null;
try {
br = new Scanner(new InputStreamReader(inputStream));
String line = null;
while (br.hasNextLine()) {
line = br.nextLine();
output.append(line + System.getProperty("line.separator"));
}
} finally {
br.close();
}
}
Сначала делают e.printStacktrace вместо e.toString –
Try [ 'ProcessBuilder.inheritIO()'] (https://docs.oracle.com/javase/7/docs/api/java/lang/ ProcessBuilder.html # inheritIO% 28% 29), убедитесь, что он пишет в stdout, а не stderr. –
Спасибо Elliott, но inheritIO() не помогло. Любые другие предложения .. – Affi