我有一個Java應用程序調用通過JNI用C++編寫的DLL,然後這個DLL動態加載另一個DLL。不知何故,在Java部分的Stdout-Stream中的某些計算機上,某些情況下,用C++寫入cerr的消息會出現。在C++部分和Java部分中,沒有任何標準流(cerr,cout,Stdout,Sterr等)的明確重定向。如何在stdout(Java)中啓動cerr(C++)?
這是怎麼發生的?我怎樣才能確保C++層的cerr-stream在Java層的Stderr流中結束?
JVM是在所有情況下是相同的,
JRE版本:6.0_27-B07,Java虛擬機:爪哇的HotSpot(TM)客戶機VM(20.2-B06混合模式窗口86)
大概這可能是由於JVM在'C++' –
@SriHarshaChilakapati中實現的原因爲什麼這麼重要? – user93353
由於JVM是在'C++'中實現的,因此Java層將位於C++層的頂層。所以我認爲這可能是因爲Java Layer正在讀取打印C++消息的控制檯時發生的。這也可能發生,因爲JVM發佈的'jni dll'發佈的錯誤正在被JVM監控。 –