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

时间:2015-11-12 21:02:07

标签: java java-native-interface

我已经使用JNI_CreateJavaVM启动了一个Java VM。我希望我的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");在使用扩展时有效。 (但是当我尝试移植到另一个操作系统时,它可能会咬我)

无论如何,我的问题是,是否有其他/更好的方法指定从哪个模块导入本机。

P.S我知道有RegisterNatives,但我希望有更自动的方式。

1 个答案:

答案 0 :(得分:0)

您可以在System.load()函数中提供可执行文件的完整路径(不难猜测任何操作系统),但RegisterNatives的代码不会太多。