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

如何在gradlew installDist时配置java.library.path解决JNI库加载错误

JNI加载原生库报错问题解决方案

错误原因

你遇到的UnsatisfiedLinkError是因为JVM执行System.loadLibrary("native")时,会从java.library.path系统属性指定的路径下查找名为libnative.so的库文件。虽然installDist已经将libnative.so打包到了构建产物的lib目录下,但默认生成的启动脚本没有将该lib目录添加到java.library.path的搜索路径中,因此JVM找不到对应原生库。

解决方案

直接修改build.gradle中application插件的配置,让生成的启动脚本自动将产物的lib目录添加到JVM启动参数的java.library.path中即可:

plugins {
    id 'application'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

application {
    mainClass = 'zxy.JNIDemo'
    // 新增配置:启动时自动将APP_HOME下的lib目录加入java.library.path
    // 注意$需要转义,保证APP_HOME变量会被启动脚本正确解析
    applicationDefaultJvmArgs = ['-Djava.library.path=\${APP_HOME}/lib']
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation files('libs/libnative.so')
}

// 可选配置:本地执行gradlew run时也能正确找到原生库
tasks.named('run') {
    systemProperty 'java.library.path', file('libs').absolutePath
}

验证步骤

  • 修改完成后重新执行./gradlew installDist
  • 运行build/install/jni/bin/jni即可正常加载原生库

内容的提问来源于stack exchange,提问作者K. Zhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:36:03