如何解决为什么输出重定向“Picked up JAVA_TOOL_OPTIONS”被打印为最后一行?
考虑以下课程:
public class SleepMessages {
public static void main(String args[]) {
System.err.println("Hi stderr!");
System.out.println("Hi stdout!");
}
}
我设置了 JAVA_TOOL_OPTIONS:
C:\temp>echo %JAVA_TOOL_OPTIONS%
-Dfile.encoding=UTF-8
当我直接调用上面的类时——我得到以下输出,“Picked up JAVA_TOOL_OPTIONS”是第一个符合预期的:
C:\temp>java -cp . SleepMessages
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Hi stderr!
Hi stdout!
但是,如果我使用重定向调用同一个类,则“Picked up ...”行是最后一个:
C:\temp>java -cp . SleepMessages > c:\temp\output.txt 2>&1
C:\temp>type c:\temp\output.txt
Hi stderr!
Hi stdout!
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
如何解释?有没有办法让这一行成为重定向输出中的第一行?
Java 版本和 Windows 版本:
C:\temp>java -version
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.282-b08,mixed mode)
C:\temp>ver -a
Microsoft Windows [Version 10.0.19041.867]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。