我想知道,java stderr在哪里标准化了?
我知道我可以使用System.setErr更改stderr,'重新分配"标准"错误输出流.',但我不知道,哪一个是"标准".
我想更多地指出我的问题:我在java(jni)中使用了C++库.问题是看起来我无法看到来自我的C++库的输出到stderr.我在C++库中调用assert(),当我运行使用该库的java api时,在控制台中看不到输出.
无论设置如何,它都会进入流程的标准错误流.
如果从控制台运行应用程序,它也可能会写入控制台.
在GUI中,标准输出/错误通常被丢弃,即输出丢失.
在服务(例如Web服务器)中,标准错误/输出通常在某个地方的旋转日志文件中捕获,但它完全取决于服务.
大多数平台允许您将标准错误流重定向到其他位置(例如,文本文件).
System.setErr的想法是允许您不使用进程本身的标准错误流,而是更改它以便对System.err.println
etc的调用转到给定的流.