我在错误流而不是输入流中获得以下命令的输出
Runtime rt = Runtime.getRuntime();
ProcessBuilder builder = new ProcessBuilder(new String[]{"cmd.exe","/c","java -version"});
Process pr = builder.start();
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
String line=input.readLine();
System.out.println(line);
Run Code Online (Sandbox Code Playgroud)
请解释
显然,Java将版本字符串发送到stderr.这不是一种非常罕见的做法,因为它不是客户端代码的输出.不要被名称误导ErrorStream:它不仅仅用于错误; 它基本上是主要信号旁边的信令侧信道,即stdout.