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