JNI - System.LoadLibrary()找到错误的依赖dll

时间:2010-08-11 21:40:41

标签: java dll java-native-interface

我使用JNI将本机C ++库链接到我的Java应用程序。我使用System.loadLibrary()加载了我的库,一切似乎都在工作。我将功能添加到我的C ++ DLL中,现在它正在调用来自第三方软件系统的多个其他dll。不幸的是,其中一个dll被命名为ZIP.dll。 java loadLibrary操作在查找我的项目目录之前在/ jre / bin中找到这个依赖的dll,因此它尝试使用那个。这两个dll不完全相同,所以我得到一个UnsatisfiedLinkError,说无法找到指定的过程。

有没有办法告诉java在加载dll时在哪里查找依赖库?

2 个答案:

答案 0 :(得分:2)

我相信使用完整路径名而不是System.load的{​​{1}}应该可以解决问题。

答案 1 :(得分:0)

我认为不可能同时加载两个具有相同名称的不同DLL。您可以更改路径上的顺序,以便首先加载正确的ZIP.dll(这可能会导致jvm出现问题),或者您可以将ZIP.dll文件重命名为其他内容。重命名您的ZIP.dll可能是最简单的方法。