代码是:
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)
为什么输出在errorStream中,而不是inputStream?
答案 0 :(得分:0)
我同意要求java打印其版本并不是一个错误,但这只是他们从一开始就做出的决定。我认为大多数应用程序都将版本打印到stdout,但至少有少数应用程序打印到stderr;例如python和gcc似乎打印到stderr,ruby打印到stdout。
他们似乎不太可能改变它,因为bug report得到了这个回复(2001年):
在修复此错误之前,我们应该非常非常仔细地思考。它的 将版本信息打印到stderr显然是错误的,但是从那以后 我们一直在这样做,因为我们可能会开始 如果我们现在改变它,就打破基于Java构建的现有系统。
所以他们承认这可能是错误的做法,但不会改变它。该错误标有“无法修复”。