是否有结果的任何特殊原因java -version
将stderr
?
例如,该命令从Windows的提示行执行:
java -version > java_version.txt
离开文件java_version.txt
空。
编辑:同样的情况与执行后打印出帮助java.exe
不带任何参数。
编辑:只是出于纯粹的好奇心我检查是否已总是这样的,它变成了它实际上有。 java -version
去stderr
在JDK 1.1.8,并在JDK 1.2.2,但的输出java.exe
不带任何参数没有。
是否有Java的版本要去标准错误结果的任何特殊原因?
据我所知,没有什么特殊的原因。 这是多么java
命令来实现/。 也许所有的回Java 1.0的方式,虽然这将是非常困难的验证。
我简短的调查表明,这种行为是如何大多数的Linux命令的行为标准输出版本信息......一切我已经试过用途不一致 。 (毕竟,版本信息不是“错误”输出。)
但是请注意, --version
/ -version
选项可以通过任何正式的标准所要求的约定,而不是东西。 (在GNU编码标准是命令应该执行国家--version
和版本信息应该被写入标准输出,但POSIX标准没有提到这一点,也没有了LSB标准)。
有什么可以/应该怎么做?
- 它应该很容易捕捉到标准错误而不是标准输出在你的shell脚本或批处理文件。
- 不应该有在做这个风险。 Oracle无法更改Java工具链发送
-version
输出到标准输出没有可能破坏用户的脚本。 这是极不可能1。
1 -这是多么的不可能是证据: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4380614 。 请注意“解决方案:无须改正” ......而最后的评论。
对于这个问题的解决方法是:
java -version 2> java_version.txt