gpt4 book ai didi

java - 如果是 java,则 ProcessBuilder 不显示输出流

转载 作者:行者123 更新时间:2023-11-30 03:14:19 25 4
gpt4 key购买 nike

如果我执行“dir”之类的命令,我会得到一个正在运行并成功显示输出的代码,但如果我运行“java -version”或来自 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();
}
}

最佳答案

java -version 写入 stderr,因此您需要 pb.redirectErrorStream(true); 来捕获输出。

 ProcessBuilder pb = new ProcessBuilder("C:\\myPrograms\\jdk1.7.0_79\\bin\\java.exe", "-version");
pb.redirectErrorStream(true);
...

关于java - 如果是 java,则 ProcessBuilder 不显示输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com