-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 に答える