问题标签 [java-native-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
41373 浏览

java - 在 JNI 代码中抛出异常的最佳方法?

我想要一种在 JNI 代码中抛出异常的一致且简单的方法;处理链式异常的东西(隐含地来自 env->ExceptionOccurred 方法,或显式地通过参数,无论哪种方式都很好)并且每次我想这样做时都可以节省我查找构造函数的时间。以上所有内容最好用 C 语言编写,尽管我可以根据需要从 C++ 翻译它。

SO上有没有人可以分享这样的东西?

0 投票
4 回答
4439 浏览

java - 使用 JNI 摆动透明度

我正在尝试创建一个简单的 Java 应用程序,该应用程序显示一个包含 JButton 的框架。我正在使用 JNI 为窗口添加透明度。窗口是透明的,但按钮不是。此外,当我移动窗口时,按钮不会随窗口移动。JLabel 也会发生同样的事情。如果我使用 Button 而不是 JButton 它工作得很好。

本机代码:

MyFrame.java

透明度.java

0 投票
3 回答
2017 浏览

c - 任何人都知道如何将 WMI 与 C 而不是 C++ 一起使用?

我不想为此重新学习 C++!任何图书馆/网址都会很棒,是的,谷歌在这里没有多大帮助:-(

这是针对即将到来的项目,我的产品(基于 Java)将为 Microsoft 的 Hyper-V 虚拟化平台提供支持。与提供 Web 服务的 VMware 不同,Hyper-V API 只是 WMI 的扩展。我不希望使用 J-Integra 等商业工具将 Java 集成到 COM/WMI 中,而且我发现的少数开源工具已经过时了。

我宁愿将 JNI 与 C 一起使用而不是 C++。有人知道我在哪里可以找到使用 C 进行 WMI 操作的库等吗?是否可以像使用 Python 客户端一样使用?(是的,我知道 C 不是 OOP 语言:D)。

提前致谢。

0 投票
2 回答
1282 浏览

java - 如何自动将数据复制到新的 RMI 线程?

我正在调整一个小的 rmi 客户端-服务器应用程序。我写了几件事:

没什么特别的,但是...我已经将手放在一个新的 RMISecurityManager 中,它调用 JNI 方法并检查单独用户的权限:

在服务器类中,我正在这样做:

这个类似乎在服务器的主线程中工作。现在的问题是当我尝试连接到该服务器类并查找注册表时。我得到了那个例外:

恕我直言,这意味着(隐式)创建了一个线程并将 NativeRMISecurityManager 作为其默认 SecurityManager。

有人对此有什么建议吗?

0 投票
2 回答
3407 浏览

java - 如何使用 JNI 将终端输出从 C 程序重定向到 System.out?

我正在通过打印到标准输出的 JNI 调用 C 库。如何将此输出重定向到 System.out?

0 投票
2 回答
693 浏览

java - 调用 JNI 模式对话框会禁用任务栏图标

在 Windows XP 上的 Java 应用程序 (JRE 1.5.0_12) 中,我调用了本机方法:

...它存在于 Visual C++ 6.0 .dll 中。它显示一个应用程序模式窗口。问题是,当这个窗口有焦点时,应用程序的托盘图标不响应鼠标点击。这是一个问题,因为当显示此窗口时,用户经常切换到另一个应用程序以选择要附加的图像,然后想要恢复此应用程序。

0 投票
2 回答
506 浏览

java - 如何知道是Applet还是Application

我在应用程序和小程序使用的类中包含此代码。

不幸的是,当小程序加载此代码时,我收到一个错误,因为它无法加载“extmapi”库。

为了避免这个错误,我需要知道我正在运行的代码是Applet还是应用程序,这样我才能做到:

我怎么知道我是否在 Applet 中运行?

0 投票
6 回答
9737 浏览

java - 在 Java 对象中存储本机指针的“正确”方法是什么?

在 Java 对象中存储本机指针的“正确”方法是什么?

如果我碰巧知道本机指针的大小 <= 32 位,我可以将指针视为 Java int,或者long如果我碰巧知道本机指针的大小 <= 64 位,我可以将指针视为 Java 。但是有没有更好或更清洁的方法来做到这一点?

编辑:从 JNI 函数返回本机指针正是我不想做的。我宁愿返回一个代表本机资源的 Java 对象。但是,我返回的 Java 对象可能必须有一个包含指针的字段,这让我回到了最初的问题。

或者,是否有更好的方法让 JNI 函数返回对本机资源的引用?

0 投票
1 回答
191 浏览

java - Possible to duplicate current java stack using JNI

I am trying to record the arguments passed to a method before it is called using bytecode instrumentation.

Currently while instrumenting using java code I have to first pop all the args into a locals, then push them again twice (once for my method which will record and in this case all primitive types have to be converted to their boxed types, and once for the actual method call).

What I would ideally like to do is just duplicate the entire stack for the num of args pushed for the method call. However the jvm bytecode's dup() instruction only allows duplicating the topmost value of the stack. Is it possible using JNI to somehow duplicate the entire stack in one go?

0 投票
1 回答
1972 浏览

java - 使用 JNI 检索 Outlook 联系人

我需要从除 Outlook Express 之外的任何 Outlook 应用程序中检索联系人列表(并且只有他们)。我见过许多不同的库可以解决我的问题,但其中任何一个都是开源的。我想知道是否值得使用 JNI 从头开始​​解决这个问题。我从未使用过这个框架进行开发;你有这方面的经验吗?或者你知道更好的方法吗?