У меня есть плагин Eclipse (A), который имеет зависимость от другого плагина (B). Плагин B - это просто обертка вокруг банки, которая содержит родную DLL и выполняет 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));
Когда плагин A выполняет свою функциональность, любое использование System.out фактически отправляется на консоль в Eclipse. Но встроенный код, используемый JNI, также записывается в выходной поток, который я не могу захватить. Во время разработки вывод JNI поступает на консоль экземпляра Eclipse, который запустил исполняемый экземпляр, который содержит плагины.
Итак, как я могу получить вывод и отображение JNI в консоли?