JNI UnsatisfiedLinkError依赖库

时间:2014-11-01 20:12:04

标签: java java-native-interface

我有一个JNI dll以及我在eclipse机器上创建的jar文件。

我正在尝试将此部署到另一台计算机,并且无法通过异常

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\CcmAccess\CcmJNIBase.dll: Can't find dependent libraries
        at java.lang.ClassLoader$NativeLibrary.load(Native Meth
        at java.lang.ClassLoader.loadLibrary1(Unknown Source)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at com.sig.ccm.CcmBase.<clinit>(CcmBase.java:8)
        at ReadTimeDomain.setupSample(ReadTimeDomain.java:24)
        at ReadTimeDomain.main(ReadTimeDomain.java:97)

我有另一个打印出java.library.path的程序,我已经验证了这个dll所依赖的dll以及这个dll在java.library.path中。

我已经阅读了他们应该进入当前目录的帖子,但这些帖子并不起作用。

我已经阅读了他们应该进入jre / bin并获得相同结果的帖子。

任何帮助都将不胜感激。

编辑:

如果我从路径中取出所有内容并强制类路径只有jar文件和&#34;。&#34;我收到了消息

Exception in thread "main" java.lang.UnsatisfiedLinkError: no CcmJNIBase in java.library.path

当我将此dll的位置添加到路径C:\ CcmAccess时,我收到完整的消息:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\CcmAccess\CcmJNIBase.dll: Can't find dependent libraries

在这个似乎工作的机器上我只需要将依赖的dll添加到我的类路径中。

1 个答案:

答案 0 :(得分:0)

仔细检查java.library.path值。 确保使用绝对路径。 相对路径会让你认为你的java.library.path是正确的,实际上它实际上是不正确的。

如果您要添加“。”在java.library.path中,您需要在执行代码时仔细检查“当前工作目录”。

如果需要在java.library.path中使用相对路径,请确保在执行代码时路径与“工作目录”相对。