问题标签 [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.
java - 我如何 Java webstart 多个依赖的本机库?
示例:我有两个共享对象(同样适用于 .dll)。第一个共享对象来自第三方库,我们称之为 libA.so。我已经用 JNI 封装了其中的一些,并创建了我自己的库 libB.so。现在 libB 依赖于 libA。
当 webstart 时,这两个库都位于一些 webstart 工作区中。我的 java 代码尝试加载 libB。此时系统加载器将尝试加载不在系统库路径中的 libA(java.library.path 对此无济于事)。最终结果是 libB 有一个不满意的链接,无法使用。
我曾尝试在 libB 之前加载 libA,但这仍然不起作用。似乎操作系统想为我做那个加载。除了静态编译之外,我还有什么方法可以完成这项工作?
java - JNI 和 Java:ant 调用 make 还是 make 调用 ant?
我即将第一次进入 JNI(Java 本机接口)世界,以提供从特定于平台的 C/C++ 代码到 Java 的文件系统更改通知。那是除非有人建议我错过了一些出色的图书馆来做这件事。
作为 JNI 的新手,我设法在它的接口方面和库生成方面找到了很多文档,但在构建本机库方面我没有找到太多。
我有一个基于 ant 的现有 Java 源代码构建,所以我正在尝试确定是否应该让 ant 调用 make 来创建库,或者最好在创建后让 make 调用 ant图书馆?
这两个选项都不是非常好,但似乎都比试图让 ant 调用编译器来编译代码并直接生成库要好。
c# - 从 Java 调用 C# 代码?
有没有人有一个很好的解决方案将一些 C# 代码集成到 Java 应用程序中?
代码很小,所以我可以用java重新编写,但如果可能的话,我宁愿重用代码。不要重复自己等等。
另外,我知道我可以将 C# 公开为 Web 服务或其他任何东西,但它里面有一些安全/加密的东西,所以如果可能的话,我宁愿保持它的紧密集成。
编辑:它将在基于服务器的应用程序上,因此“下载”另一个运行时无关紧要。
java - 通过 JNI 更快的 Math.exp()?
我需要Math.exp()
经常从 java 计算,是否有可能让本机版本比javaMath.exp()
运行得更快?
我只尝试了 jni + C,但它比普通的java慢。
java - 如何将 jstring 转换为 wchar_t *
假设在 C++ 端,我的函数采用jstring
名为myString
. 我可以将其转换为 ANSI 字符串,如下所示:
有没有办法得到
const wchar_t* unicodeString =
...
java - 使用 Java 读取 Windows EventLog 的方法
有人对如何在不使用 JNI 的情况下读取 Windows EventLog 有任何指示吗?或者,如果您必须使用 JNI,是否有任何好的开源库可以做到这一点?
java - JAVA、JNI 和 C 应用程序的内存占用问题
我有一个用 C 编写的应用程序,它生成一个 JVM 并使用 JNI 与 Java 应用程序交互。我通过 Process Explorer 的内存占用达到 1GB 并且内存不足。现在据我所知,它应该能够达到 2GB。我相信的一件事是 JVM 正在使用的内存在 Process Explorer 中不可见。我的 xmx 设置为 256,我添加了一些语句来观察 java 端内存,它在 256 处达到峰值,而 GC 正在完成它的工作,这一切都很好。所以我的问题是,其他 700+ MB 的消耗在哪里?那里有 Java/JNI/C 内存专家吗?
java - 将键盘事件从 java 发送到任何应用程序(屏幕键盘)
我正在用java开发一个屏幕键盘。该键盘具有JComponent
适用于所有可能的键。当在按钮上检测到鼠标按下时,我想将特定的键盘代码发送到当前处于焦点的应用程序。键盘本身JFrame
没有任何装饰,并设置为始终在顶部。
我发现 Robot 类可以用来模拟原生队列上的这些键盘事件。但是,在这种情况下,选择JComponent
将意味着在 上接收到按键JFrame
,而我将无法在其他应用程序中接收到它
如何让我的屏幕键盘“始终没有焦点”?是否可以使用另一种方法来发送按键?
java - UnsatisfiedLinkError:找不到指定的过程
我正在用 C++ 编写一些 JNI 代码,以便从 Windows XP 上的小程序中调用。我已经能够成功地运行小程序并加载和调用 JNI 库,甚至可以让它调用其他 DLL 中的函数。我通过设置 PATH 系统环境变量来包含我所有的 DLL 所在的目录来实现这一点。
所以,问题是我添加了另一个使用新外部 DLL 的调用,并且在加载库时突然抛出 UnsatisfiedLinkError。消息是:“找不到指定的过程”。这似乎不是缺少依赖 DLL 的问题,因为我可以删除依赖 DLL 并获得有关缺少依赖 DLL 的不同消息。从我在网上找到的信息来看,这条消息似乎意味着 DLL 中缺少本机 Java 函数实现,但奇怪的是,如果没有这些额外的代码,它可以正常工作。
有谁知道这可能是什么原因造成的?对于 UnsatisifedLinkError,什么样的事情可以给出“找不到指定的过程”消息?