有没有什么特别的原因,java转换成stderr的结果?
java -version > java_version.txt
将文件java_version.txt留空.
编辑:执行java.exe后没有任何参数的打印输出也是一样.
编辑:只是出于一种纯粹的好奇心,我检查了它是否一直是这样,事实证明它实际上是. java -version在JDK 1.1.8中也是JDK 1.2.2中的stderr,但是没有任何参数的java.exe的输出没有.
解决方法
Is there any special reason for the results of java -version going to stderr?
AFAIK没有特别的理由.它只是java命令的实现方式.
我的简短调查显示,这与大多数Linux命令行为是否一致…我尝试使用的其他一切都使用了stdout.但是–version / -version选项是一个约定,而不是任何标准所要求的.
你能做什么/应该怎么办?
>在shell脚本或批处理文件中应该很容易捕获stderr而不是stdout.
>这样做不应该有任何风险. Oracle无法更改Java工具链以将-version输出发送到stdout,而不会潜在地破坏客户脚本.这是非常不可能的1.
1 – 这里证明是不太可能的:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4380614.请注意“解决方案:不修复”…和最后的评论.