java -version前往结果是否有任何特殊原因stderr?
java -version
stderr
例如,从Windows的提示行执行以下命令:
java -version > java_version.txt
将文件java_version.txt留空。
java_version.txt
编辑:在java.exe没有任何参数的情况下执行后打印出的帮助也会发生同样的情况。
java.exe
编辑:出于好奇,我检查了它是否一直都是这样,事实证明它确实存在。在JDK 1.1.8和JDK 1.2.2中java -version都转到stderr,但是java.exe不带任何参数的输出不会。
java -version的结果进入stderr是否有任何特殊原因?
AFAIK,没有特殊原因。这就是java命令的执行方式。可能一直追溯到Java 1.0,尽管很难验证这一点。
java
我的简要调查表明,此行为与大多数Linux命令的行为 不一致 ……我尝试过的所有其他操作都使用stdout获取版本信息。(毕竟,版本信息不是“错误”输出。)
但是请注意,--version/ -version选项是一种约定,而不是任何正式标准所要求的。(GNU编码标准声明应该实现命令,--version并且应该将版本信息写入标准输出。但是POSIX标准没有提及这一点,LSB标准也没有提及。)
--version
-version
您可以/应该做什么?
1-这是一种不太可能的证据:https : //bugs.java.com/bugdatabase/view_bug.do?bug_id=4380614。请注意“解决方案:无法修复” …和最终注释。