Tengo una aplicación Java que llama a una DLL escrita en C++ a través de JNI, esta DLL carga dinámicamente otra DLL. De alguna manera, los mensajes escritos para cerr en C++ aparecen en algunos casos en algunas computadoras en el Stdout-Stream de la parte de Java. No hay una redirección explícita de ninguno de los flujos estándar (cerr, cout, Stdout, Sterr, etc.) ni en la parte de C++ ni en la parte de Java.¿Cómo puede aparecer cerr (C++) en Stdout (Java)?
¿Cómo puede suceder esto? ¿Cómo puedo asegurarme de que la cerr-stream de la capa de C++ termine en la corriente de Stderr de la capa de Java?
La JVM es en todos los casos el mismo,
JRE versión: 6.0_27-b07, Java VM: Java HotSpot (TM) Client VM (20.2-B06 modo de Windows en 86 mixtos)
Lo más probable es que esto se deba a que la JVM se está implementando en 'C++' –
@SriHarshaChilakapati ¿por qué debería importar? – user93353
Como la JVM se implementa en 'C++', la capa de Java estará en la parte superior de la capa de C++. Entonces, creo que esto está sucediendo, ya que Java Layer lee la consola en la que se imprimen los mensajes de C++. Esto también puede ocurrir porque los errores publicados por 'jni dll' están siendo monitoreados por la JVM. –