"java -version"命令导致错误流

may*_*ari -2 java cmd

我在错误流而不是输入流中获得以下命令的输出

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)

请解释

Mar*_*nik 5

显然,Java将版本字符串发送到stderr.这不是一种非常罕见的做法,因为它不是客户端代码的输出.不要被名称误导ErrorStream:它不仅仅用于错误; 它基本上是主要信号旁边的信令侧信道,即stdout.