我已经使用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
,但我希望有更自动的方式。
答案 0 :(得分:0)
您可以在System.load()
函数中提供可执行文件的完整路径(不难猜测任何操作系统),但RegisterNatives的代码不会太多。