为什么’java -version’转到stderr?

前端之家收集整理的这篇文章主要介绍了为什么’java -version’转到stderr?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有什么特别的原因,java转换成stderr的结果?

例如,该命令从Windows提示符行执行:

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.请注意“解决方案:不修复”…和最后的评论.

猜你在找的Java相关文章