2023-01-17 393
我有一个Eclipse插件(a),该插件对另一个插件具有依赖性(b).插件B只是围绕包含本机DLL的JAR周围的包装器,并执行JNI功能.
鉴于此设置,我在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执行其功能时,任何对系统的使用.但是JNI使用的本机代码也将其写入输出流,我无法抓住.
在开发过程中,JNI的输出进入了Eclipse实例的控制台,该实例启动了运行实例,其中包含插件.
那么如何抓住JNI输出并在控制台中显示?
您可以尝试使用 freopel”> freopen 与您在Java中的方式相同,但在本地一侧.问题是,如果您在自己的插件中使用它(带有新的JNI DLL),这是否会起作用:可能需要从DLL中使用控制台输出,我不知道跨DLL之间的流相互作用.如果Stdout指的是整个过程的共享流,则可能会起作用.
您真的不能.本机DLL使用无法从Java访问的STDIO方法.如果您写入系统.
有一个硬件解决方案:获取第二个监视器,以便您可以一直在其中启动Eclipse的终端.
例如. Eclipse 2019-06定期委托std::printf(…)和std::cout从JNI代码到控制台视图
冲洗(=实际打印)由fflush(stdout);进行.
以上所述是小编给大家介绍的当Eclipse插件使用JNI时,如何将JNI控制台输出重定向到Eclipse Console视图?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25750.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态