【问题标题】:"java -version" command result in error stream [duplicate]“java -version”命令导致错误流[重复]
【发布时间】:2013-02-27 21:27:46
【问题描述】:

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

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 cmd


    【解决方案1】:

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

    【讨论】:

    • 查看链接问题和我的答案了解更多详情。
    【解决方案2】:
    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-05-28
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 2019-04-17
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多