-2

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

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

请解释

4

2 回答 2

4

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

于 2013-02-27T13:24:51.930 回答
0
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);

    }
于 2013-02-27T13:27:46.927 回答