当 Eclipse 插件使用 JNI 时,如何将 JNI 控制台输出重定向到 Eclipse 控制台视图?

2024-04-14

我有一个 Eclipse 插件 (A),它依赖于另一个插件 (B)。插件 B 只是一个 jar 的包装器,其中包含本机 dll,并执行 jni 功能。 鉴于此设置,我在 A 的 Activator 类的 start 方法中有以下代码:

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 输出并显示在控制台中呢?


你可以尝试使用freopen http://www.cplusplus.com/reference/clibrary/cstdio/freopen/以与 Java 中完全相同的方式重定向 stdout,但在本机端。问题是,如果您在自己的插件中使用它(使用新的 JNI dll),这是否可行:可能需要在 dll 中使用它来执行控制台输出,我不知道跨 DLL 的流之间的交互。如果 stdout 引用整个过程的共享流,也许它会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 Eclipse 插件使用 JNI 时,如何将 JNI 控制台输出重定向到 Eclipse 控制台视图? 的相关文章

  • 网页配置。使用规则元素将所有流量重定向到 www.my...。

    我有一个 web config 文件 它自动将流量发送到 HTTPS 但是 如果有人进入 MyDomain com 那么它将转到https mydomain com https mydomain com如果有人输入 www mydomain
  • XDoclet,一个死工具?

    我正在使用最新的 Eclipse for Java EE 和最新的 JBoss Tools 插件 现在 我正在编写一些 EJB 2 x 代码 我找不到像以前一样生成 xdoclet build xml 文件的方法 经过一番调查后 我开始问自
  • vNext:使用 razor 视图而无需托管的控制台应用程序

    我正在创建执行一些文件转换的控制台应用程序 这些转换可以轻松完成 从输入文件创建模型 然后为输出执行 razor 模型 为了在 IDE 中实现此功能 我使用了 Visual Studio 2015 预览版并创建了一个使用 MVC 的 vne
  • DDMS 显示在线模拟器的空文件资源管理器

    我很多天都面临这个问题 我搜索了很多但没有找到任何方便的答案 每当我启动模拟器时 一段时间后 当我看到 DDMS 时 它会显示模拟器在线 但其文件资源管理器什么也不显示 当我再次重新启动模拟器或重新启动 Eclipse 时 它 会再次可见
  • Eclipse CDT 内置包含目录

    Under Eclipse CDT gt Project Settings gt C C General gt Paths and Symbols gt Includes gt GNU C 有一个包含路径的列表 有些是粗体的并且是特定于项目
  • 如何将H2数据库文件存储到项目目录中

    当我使用H2数据库时 数据库文件存储在C Users MyName TestDataBase db目录 H2路径是jdbc h2 TestDataBase 这是默认的 H2 数据库路径 是否有可能像这样将 H2 数据库文件存储到我的项目目录
  • 无法使用激活器(Play Framework)加载本机库

    我正在尝试在 Play 2 4 x 应用程序中加载本机库 我编写了一个简单的测试 该测试在 IDE IntelliJ 和 SBT 中都运行良好 在这两种情况下我都设置java library path让测试运行 我在IDE中设置 Djava
  • 我无法更改 Eclipse 中包资源管理器的字体大小

    我尝试从菜单更改 Eclipse 中包资源管理器的字体大小Window 优先 General 外貌 并且我无法更改字体大小 我怎样才能做到这一点 我在 Windows 7 上使用 Eclipse v4 2 Juno 在 Juno 及更高版本
  • jni.h:没有这样的文件或目录

    我一直在关注本教程 http www java tips org other api tips jni simple example of using the java native interface html 在第 5 步 我从 GCC
  • Eclipse 中的预构建事件

    我有一个使用 jaxb 进行一些 xml 处理的项目 如何在 eclipse 中设置预构建事件以在构建项目之前执行 xjc 转到项目 gt 属性 gt 构建器 创建您自己的构建器并启用它 并在构建器的配置中启用 自动构建期间 等 如下所示
  • 如何在.Net Console App中设置默认输入值?

    如何在 net 控制台应用程序中设置默认输入值 这是一些虚构的代码 Console Write Enter weekly cost string input Console ReadLine 135 135 is the default T
  • 奇怪的本机崩溃 - pid:0,tid:0 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR)

    我在 Android 上遇到了奇怪的崩溃 pid 0 tid 0 gt gt gt com oimvo discdj lt lt lt backtrace 00 pc 000000000001d050 data app com oimvo
  • Eclipse 在“项目资源管理器视图”中不显示 /target/classes 文件夹

    这就是项目 gt 属性 gt java构建路径 gt 源选项卡中的样子 不知道我缺少什么 但 target classes 文件夹没有显示在 项目资源管理器 视图中 有人可以帮忙吗 项目资源管理器视图默认不显示输出文件夹 要更改此设置 请单
  • 在远程 Tomcat 上自动部署 Java 应用程序

    我希望能够自动将 Java 应用程序部署到 tomcat 服务器 现在的情况 正在 Eclipse 中开发 Java 项目 Tomcat 服务器在另一台机器上运行 提供该项目的 WAR 文件 我的目标 可以轻松编译项目并将其部署到远程 To
  • Eclipse 调试器 - 跳转到或仅显示挂起的线程

    我有一个带有很多线程的 Java 应用程序 在调试时 当一个线程中的执行被断点停止时 在所有线程之间滚动以查找挂起的线程是非常烦人的 有没有办法 按钮 快捷键等 跳转到挂起的线程 或者更好 隐藏所有未挂起的线程 我同意这很烦人 而且答案非常
  • Android NDK 构建,方法无法解析

    我有一个带有本机代码的 Android 项目 我可以通过调用从命令行构建本机代码ndk build命令没有错误或警告 但是当我在ADT中打开它时 它显示以下错误 错误信息 Method CallStaticIntMethod could n
  • WAR 文件在 Tomcat 服务器中抛出 OutOfMemoryError

    我有一个 Spring MVC WAR 文件 可以在我的本地计算机 程序和网站 中完美运行 一旦我将文件上传到服务器 aTomcat 7 并尝试访问它 catalina 日志文件表明java lang OutOfMemoryError 我尝
  • 重定向和引用者

    我的实际实现要复杂得多 需要身份验证和一堆其他东西 但以最简单的形式 这就是我遇到的问题 使用标头重定向不会将其自身显示为引用者 所以 假设我有三个页面 start php middle php 和 end php 启动 php a hre
  • 有没有办法防止 Tomcat 在加载的 JNI 库损坏内存时崩溃?

    我们有一个在 Tomcat 7 上运行的 Web 应用程序 它加载一个用 C 编码且由第三方开发的 JNI 库模块 基本上 这个库为我们的网络应用程序提供生物识别技术 我们不能为此使用全 java 解决方案 除了使用 JNI 库模块之外别无
  • 删除不需要的空行 Eclipse 编辑器

    当我在 eclipse 中打开任何文件时 它在所有代码行和空白行之后显示替代空白行 我怎样才能删除它 In eclipse preference setting you can remove all the unwanted blank l

随机推荐

  • git diff HEAD 与 git diff --staged 之间有什么区别?

    有什么区别git diff HEAD and git diff staged 我尝试了两者 但都给出了相同的输出 假设这个输出为git status git status On branch master Changes to be com
  • 如何在android中使用xml布局进行绘制

    我正在尝试完成开发人员页面上给出的 android 示例 它提供了两种在画布上绘图的方法 第一种方法是使用名为 CustomDrawableView 的类 如下所示 public class CustomDrawableView exten
  • 如何清除 WPF Frame 控件托管的整个导航历史记录

    在 WPF 应用程序中 Frame 控件用于托管 导航页面 我想清除导航历史记录 有 NavigationService RemoveBackEntry 方法可用于清除历史记录的向后部分 但是前向导航历史又如何呢 这部分怎么清除呢 最佳实践
  • Android WebView 显示纯文本而不是 html

    首先 我想说这只是 Android 2 及更早版本上的问题 4 似乎不受影响 我没有测试 3 我有一个WebView从字符串加载 html HTML 看起来像这样 h1 Hello World h1 您可以看到 css 文件如下所示 bod
  • H2DB WITH 子句

    我正在使用以下 sql 为方法编写单元测试 WITH temptab i id i name i effective i expires i lefttag i righttag hier id hier dim id parent ite
  • iPad 弹出文本字段 - resignFirstResponder 不会关闭键盘

    我有两个文本字段电子邮件和密码 当字段显示在常规视图上时 以下代码工作正常 但当它们显示在弹出窗口上时 resignFirstResponder 不起作用 becomeFirstResponder 起作用 为这两个字段调用了 textFie
  • 将 C dll 代码编组为 C#

    我在 dll 中有以下 C 代码签名 extern declspec dllexport unsigned char funct name int w int h char enc int len unsigned char text in
  • 当使用 apply() 和 call() 方法很容易继承时,为什么人们在 JavaScript 中使用原型?

    形状由矩形继承 这种继承可以通过多种方法来完成 这里我使用了apply 和call 当子类的draw方法被调用时 从该方法中再次调用基类的draw方法 我通过两种方式完成了这件事 一种是制作基类的原型绘制方法 另一种是使用 apply 和
  • Google 应用引擎 - 如何禁用缓存

    所以一些背景 我有一个在谷歌应用程序引擎上运行的nodeJS api 默认情况下 应用程序引擎会将我的所有获取请求缓存 10 分钟 我将 cloudflare 用于我的 API 因为这允许我在需要时从缓存中删除特定项目 您可以想象这会引起一
  • Swift iOS - 标签集合视图

    我正在编写我的第一个 iOS 应用程序 我只想回答最知名的解决方案是什么 这是简单的标签收集 我已经在互联网上查看过 但一无所获 我认为最好的方法可能是制作我自己的按钮结构 这是我想要实现的目标 有时你需要自己做 import UIKit
  • 在 Visual Studio Code 中自动导入以进行 React-Native 开发 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有扩展名吗VS Code这使得自动导入 for 反应本机组件 例如 当我打字时
  • 异步映射中的同步部分

    我有一个大的 IO 函数 它将持续从文件夹加载数据 对数据执行纯计算 然后写回 我正在多个文件夹上并行运行此函数 mapConcurrently iofun folderList from http hackage haskell org
  • 使用 AutoMapper 进行集合的多态映射

    TL DR 我在多态映射方面遇到了麻烦 我已经制作了一个 github 存储库 其中包含一个测试套件来说明我的问题 请在这里找到它 回购链接 https github com 780Farva AutoMapperInquiry 我正在努力
  • Neo4j 客户端使用“DateTime?”展开

    我目前正在尝试展开具有 日期时间 的 TravelEdges 列表 但我不断收到以下错误 CypherTypeException 类型不匹配 需要一个地图 但是字符串 2018 05 21T08 38 00 我目前正在使用最新版本的 neo
  • Azure SQL 数据库连接问题 - 连接太多?

    我有一个最近推出的白标网站 同一网站的多个版本 目前还没有大量流量 主要是机器人 但每天可能有 800 个用户 它托管在 Azure 上 具有 Azure 数据库以及位于非 Azure 服务器上的管理面板 两个站点都连接到同一 Azure
  • 使用git打开文件的命令

    我将 Sublime Text 作为 git 中的默认编辑器 并且它有效 git config edit在 Sublime Text 中打开配置文件 很棒 我的问题 打开命令是什么index html or style css从项目目录内部
  • 从多类分类算法输出前 2 个类

    我正在研究文本的多类分类问题 其中我有很多不同的类 15 我训练了一个 Linearsvc svm 方法 方法只是示例 但它只输出概率最高的单个类 有没有一种算法可以同时输出两个类 我正在使用的示例代码 from sklearn svm i
  • ValueError:Layerequential_20 需要 1 个输入,但它收到了 2 个输入张量

    我正在尝试使用 Tensorflow 中的 KMNIST 数据集和我正在使用的教科书中的一些示例代码构建一个简单的自动编码器 但当我尝试拟合模型时 我不断收到错误 错误说ValueError Layer sequential 20 expe
  • 迭代 std 容器中的所有元素对 (C++)

    迭代 std 容器中所有元素对的最佳方法是什么std list std set std vector etc 基本上与此等效 但使用迭代器 for int i 0 i lt A size 1 i for int j i 1 j lt A s
  • 当 Eclipse 插件使用 JNI 时,如何将 JNI 控制台输出重定向到 Eclipse 控制台视图?

    我有一个 Eclipse 插件 A 它依赖于另一个插件 B 插件 B 只是一个 jar 的包装器 其中包含本机 dll 并执行 jni 功能 鉴于此设置 我在 A 的 Activator 类的 start 方法中有以下代码 MessageC