当前位置: 首页 > 知识库问答 >
问题:

JNI未满足链接错误相关库

亢奇
2023-03-14

我有一个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添加到我的类路径中。

共有1个答案

万俟穆冉
2023-03-14

仔细检查java。图书馆路径值。确保使用的是绝对路径。相对路径会让您想到您的java。图书馆路径是正确的,而实际上它是不正确的。

如果您正在添加“”在java中。图书馆路径,则在执行代码时需要仔细检查“当前工作目录”。

如果您需要在java中使用相对路径。图书馆路径,确保在执行代码时该路径与“工作目录”相对。

 类似资料:
  • 我试图编写一个简单的Java程序,通过JNI调用C函数来打印“Hello World”。一切编译都没有错误,但当我运行程序时,我得到一个“UnsatisfiedLinkError:找不到依赖库”。 根据Dependency Walker和dumpbin的说法,唯一的依赖项是“kernel32.dll”,在C:\Windows\System32及其依赖项中,也在System32中。 使命感 返回时没

  • 为什么我会得到不满意的链接错误? 细节如下: 本机方法的原型及其在我的Java代码中的调用是这样的: 私有本机long sampleFunction(long[][]twoDimArray,long number); p.SampleFunction(twoDimArray,number); 本机方法在VC++代码中的原型是这样的: JNIEXPORT jlong JNICALL Java_MyC

  • 我是一名学生,正在为我的学校项目开发OCR功能。到目前为止,我能够成功地实现这些功能并运行应用程序。 我在Android Studio1.5.1上有我的应用程序,并且能够在我的旧设备三星银河笔记3应用编程接口21上运行它。最近,我将我的设备更改为三星银河笔记5应用编程接口22,每当我试图运行光学字符识别功能时,应用程序就会崩溃。 以下是日志: 致命异常:java。lang.IllegalState

  • 我试图从java调用一个使用C样式字符串的C函数。当我使用C风格的字符串时,程序执行得很好,但正如我声明std::string时,不知何故,它再也找不到依赖库了。我在eclipse环境中检查了includes文件夹,它确实包含 这是我的本地文件: 这段代码可以很好地从java编译并运行良好,但只要我尝试使用std::string版本(注释),代码就会编译并创建动态库,但在运行java代码时,我会遇

  • 我正在尝试使用JNLP构建一个小程序。我编写了一个Ant脚本来编译java类、构建jar文件并对它们进行签名。我使用与Ant构建的相同的密钥库对所有jar进行了签名。我在Java控制面板中授予了显示自签名小程序的权限。如果我直接运行JNLP文件,一切都很好,但是如果我将此小程序放在网页中,我会得到不满意的LinkError。 这是我得到的错误: 我根据操作系统构建的每个jar文件都包含gluege

  • 问题内容: 我想创建一个简单的JNI层。我使用Visual Studio 2008创建了一个dll(带有DLL作为选项的Win 32 Console Application项目类型)。我在调用本地方法时收到此异常: 生成的头文件是: 实现文件是: Java文件是: 当我调用本地方法“ Hello”时,我得到执行。 我观察到的另一件事是,当我使用以下命令在命令行中进行编译时:“ cl -I” C:\