У меня есть плагин Eclipse (A), который зависит от другого плагина (B). Плагин B — это просто оболочка вокруг jar, которая содержит собственную dll и выполняет функции jni. Учитывая эту настройку, у меня есть следующий код в методе запуска класса Activator A:
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 и отобразить его в консоли?