您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll

java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll

为了System.loadLibrary()正常工作,该库(在Windows上为DLL)必须位于目录中PATH 或java.library.path系统属性中列出的路径上的某个目录中(这样你就可以启动Java了java -Djava.library.path=/path/to/dir)。

此外,对于loadLibrary(),你可以指定库的基本名称,但.dll结尾不能带。因此,/path/to/something.dll你只需使用System.loadLibrary("something")

你还需要查看所获得的确切信息UnsatisfiedLinkError。如果显示类似以下内容

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

那么它将无法在你的或中找到foo库(foo.dll)。如果显示类似以下内容PATHjava.library.path

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V

则库本身有问题,因为Java无法将应用程序中的本机Java函数映射到其实际本机副本。

首先,我会在你的System.loadLibrary()呼叫周围记录一些日志,以查看该呼叫是否正常执行。如果它引发异常或不在实际执行的代码路径中,那么你将始终得到UnsatisfiedLinkError上面解释的后一种类型。

loadLibrary()附带说明一下,大多数人使用本机方法调用放入类中的静态初始化程序块中,以确保始终始终执行一次:

class Foo {

    static {
        System.loadLibrary('foo');
    }

    public Foo() {
    }

}
java 2022/1/1 18:18:19 有463人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶