我有一个 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 文件和“.”我收到消息了
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 添加到我的类路径中。
最佳答案
仔细检查您的 java.library.path 值。 确保您使用的是绝对路径。 相对路径会让你认为你的 java.library.path 是正确的,但实际上它是不正确的。
如果您要添加“.”在您的 java.library.path 中,那么您在执行代码时需要仔细检查“当前工作目录”。
如果您需要在 java.library.path 中使用相对路径,请确保在执行代码时该路径是相对于“工作目录”的。
关于java - JNI UnsatisfiedLinkError 依赖库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26692759/