我有一个自己的JNI dll,它取决于其他一些dll(确切地说是零MQ)。 我已经通过Visual Studio在Windows 7(64位)上编译了这些依赖项。我定义我得到64位dll。
在开发者机器上它运行得很好。 但是,如果我将这些dll移动到另一台机器(也是Windows 7 64位),我会得到标题中提到的错误。
我还将我的minigw-64安装移到了这台机器上以编译我的dll。为此,我还需要所有其他dll,我可以成功编译它。但是,如果我启动jar文件(我的jni-lib将被加载),我会得到这个UnsatisfiedLinkError。
我在两台电脑上完全一样。 Path或java.library.path在两者上都是相同的。
我的开始脚本如下所示:
set PATH=C:\Path\To\my\dependencies;.;%PATH%
java -jar myjar.jar
pause
任何想法可能是什么问题?
答案 0 :(得分:2)
检查以下内容。
1)确保库名中没有拼写错误。
加入linux应该是像
这样的东西System.load.library( “MYLIB”);
然后lib名称应该像libmylib.so。
2)您需要添加java库路径的位置,如
-Djava.library.path =“你的dll位置的路径”。
3)确保您使用的Jre版本编译了库(如果使用64位Jre,则需要以64位编译dll)。或者你可以在你的jre中使用-d32或-d64标志。
4)确保dll不处于调试模式,因为它需要机器中的微软调试运行时库(如果是这样的话)(我已经完成了很多次)。如果依赖项存在任何问题,则path walker应该可以帮助您识别依赖性问题。