You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JNI开发遇UnsatisfiedLinkError:库存在且路径正确仍报错

Ubuntu 18.04.01下JNI开发java.lang.UnsatisfiedLinkError排查方案

你遇到的问题是:本地库libMyNativeLib.so存在,路径已加入LD_LIBRARY_PATH且java.library.path包含该路径,但运行java -jar MyTest.jar时仍报错找不到库,异常信息如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no libMyNativeLib.so in java.library.path: /usr/local/src/MyProject/lib:/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
at java.base/java.lang.System.loadLibrary(System.java:1989)
at MyTest.main(MyTest.java:37)

核心加载代码:

public class AJniClass {
    static {
        System.loadLibrary("MyNativeLib");
    }
}

库文件路径:/usr/local/src/MyProject/lib/libMyNativeLib.so

以下是具体排查思路和解决办法:

  • 检查库与JVM的架构兼容性
    用file命令查看库的架构:

    file /usr/local/src/MyProject/lib/libMyNativeLib.so
    

    再用java -version查看JVM的架构(比如64-Bit Server VM),两者必须完全匹配。32位JVM无法加载64位库,反之亦然。

  • 排查库的依赖缺失
    用ldd命令检查库的依赖项,看是否有缺失的系统库:

    ldd /usr/local/src/MyProject/lib/libMyNativeLib.so
    

    如果输出中有not found的项,需要安装对应的依赖包,或者将缺失库所在路径添加到LD_LIBRARY_PATH中。

  • 强制在运行命令中指定LD_LIBRARY_PATH
    有时环境变量的设置可能未在Java进程中生效,直接在运行命令前指定:

    LD_LIBRARY_PATH=/usr/local/src/MyProject/lib java -jar MyTest.jar
    

    强制让当前Java进程优先加载该路径下的库。

  • 检查库及目录的访问权限
    确保Java进程拥有读取库文件和访问目录的权限:

    # 给目录添加执行权限(允许进入目录)
    chmod +x /usr/local/src/MyProject/lib
    # 给库文件添加读取权限
    chmod +r /usr/local/src/MyProject/lib/libMyNativeLib.so
    

    如果用非root用户运行Java,还要确认该用户对整个路径有访问权限。

  • 尝试用绝对路径直接加载库
    修改加载代码,跳过路径查找逻辑,直接指定库的绝对路径:

    public class AJniClass {
        static {
            System.load("/usr/local/src/MyProject/lib/libMyNativeLib.so");
        }
    }
    

    如果能成功加载,说明是路径查找逻辑的问题;如果仍报错,说明库本身存在问题(如依赖、架构不兼容)。

  • 确认JDK版本兼容性
    检查编译JNI库时使用的JDK版本,与运行MyTest.jar的JDK版本是否一致。比如用JDK 8编译的库在JDK 11环境下可能出现兼容性问题,尽量保持版本一致。

内容的提问来源于stack exchange,提问作者Dan Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:31:07