我有一個Eclipse插件(A),它依賴於另一個插件(B)。插件B只是一個jar包的包裝,它包含一個本地dll,並執行jni功能。 鑑於此設置,我有一個的Activator類的start方法如下代碼:當Eclipse插件使用JNI時,如何將JNI控制檯輸出重定向到Eclipse Console視圖?
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輸出並在控制檯中顯示呢?
什麼函數在本地代碼中記錄消息? printf,fprintf,puts?...你可以自由地重寫代碼,改變日誌記錄功能嗎? – 2010-12-13 15:20:14
由於涉及JNI:便攜式應該如何成爲解決方案?至少在什麼平臺上工作? – 2011-10-09 11:07:37