&引用;java版本;命令导致错误流

&引用;java版本;命令导致错误流,java,cmd,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.

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

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);

请解释清楚,Java将版本字符串发送到
stderr
。这不是一种非常罕见的做法,因为它不是客户机代码的输出。不要被名称
ErrorStream
所误导:它不仅仅用于错误;它基本上是主通道旁边的一个信令侧通道,即
stdout

请参阅链接的问题和我的答案以了解更多详细信息。
It works file in jdk7

    public static void main(String[] args) throws Exception {
        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);

    }