JNI - 将自己的可执行文件指定为本机方法的源

JNI - Specify the own executable as source for native methods

我已经用 JNI_CreateJavaVM 启动了一个 Java 虚拟机。我希望我的 java 类 能够使用从启动 JNI_CreateJavaVM.

的可执行文件导出的本地方法

在 google 结果周围,人们告诉您使用 System.loadLibrary 指定从哪个库导入本机方法。然而,做

public class someclass 
{
    static { System.loadLibrary("myExeName.exe"); }
}

将失败 FindClass

java.lang.UnsatisfiedLinkError: no myExeName. in java.library.path

(我添加了 -Djava.library.path=. 作为 JavaVMOption

似乎 Java 切断了扩展名,这令人失望,因为 win32 LoadLibrary("myExeName.exe"); 在拥有扩展名时可以正常工作。 (但是当我尝试移植到另一个 OS 时它可能会咬我)

无论如何,我的问题是是否有 other/better 方法指定从哪个模块导入 natives。

P.S 我知道有 RegisterNatives,但我希望有一种更自动化的方法。

您可以将可执行文件的完整路径(在任何 OS 上不难猜到)提供给 System.load() 函数,但 RegisterNatives 并没有写太多代码。