2

コードは次のとおりです。

Process p = "java -Xmx128M -version".execute()
Process p = "ls\ndir".execute()
p.inputStream.eachLine { println it}
println "error:"
p.errorStream.eachLine { println it}

次に、次のように出力します: エラー:

java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode)

出力がinputStreamではなくerrorStreamにあるのはなぜですか?

4

1 に答える 1

0

Java にそのバージョンを印刷するように依頼することはエラーではないことに同意しますが、それは彼らが最初から行った決定にすぎません。ほとんどのアプリケーションはバージョンを stdout に出力すると思いますが、少なくともいくつかは stderr に出力します。たとえば、python と gcc は stderr に出力され、ruby は stdout に出力されるようです。

2001 年にバグ レポートに次の回答があったため、変更される可能性は低いと思われます。

このバグを修正する前に、非常に慎重に検討する必要があります。バージョン情報を stderr に出力するのは明らかに間違っていますが、最初からそうしてきたので、今変更すると Java 上に構築された既存のシステムが壊れてしまう可能性が高いようです。

したがって、彼らはそれがおそらく間違ったことだと認めていますが、それを変えるつもりはありません。バグは「修正されません」とマークされています。

于 2013-10-10T11:17:20.637 に答える