Tengo un plugin de Eclipse (A) que tiene una dependencia en otro complemento (B). El complemento B es simplemente un contenedor alrededor de un contenedor, que contiene un dll nativo y ejecuta la funcionalidad jni. Dada esta configuración, tengo el siguiente código en el método de inicio de clase Activador de A:¿Cómo puedo redirigir la salida de la consola JNI a la vista de la consola Eclipse, cuando el complemento Eclipse usa JNI?
MessageConsole jniConsole = new MessageConsole("Opereffa Output", null);
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { jniConsole });
ConsolePlugin.getDefault().getConsoleManager().showConsoleView(jniConsole);
MessageConsoleStream stream = jniConsole.newMessageStream();
System.setOut(new PrintStream(stream));
System.setErr(new PrintStream(stream));
Cuando Plugin A realiza su funcionalidad, cualquier uso de System.out que realmente sucede dentro de la consola de Eclipse. Pero el código nativo utilizado por JNI también escribe en el flujo de salida, que no puedo captar. Durante el desarrollo, la salida de JNI va a la consola de la instancia de Eclipse que ha lanzado la instancia en ejecución, que contiene los complementos.
Entonces, ¿cómo capturo la salida JNI y la visualizo en la consola?
¿Qué función (es) registra mensajes en el código nativo? printf, fprintf, puts? ... ¿Sería libre de reescribir el código, cambiando la función de registro? –
Dado que JNI está involucrado: ¿Qué tan portátil debe ser una solución? ¿En qué plataformas debería funcionar al menos? –