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

IntelliJ生成JAR文件后运行出现JNI error问题求助

解决LeanFT项目JAR执行时的JNI错误问题

这种JNI错误我碰到过好几次,尤其是在打包LeanFT项目的时候,核心原因大多和JRE/JDK版本不匹配或者JAR打包时缺失依赖有关,毕竟LeanFT本身依赖了不少原生库,咱们一步步来排查解决:

1. 先核对JRE与项目编译JDK的版本一致性

IDE里运行项目时用的是你配置的JDK,但双击JAR文件默认调用的是系统全局的JRE,如果两者版本不兼容(比如项目用JDK 8,系统JRE是11),就会触发JNI错误。

  • 打开IntelliJ的File -> Project Structure -> Project,查看你的Project SDK版本(比如JDK 1.8)
  • 打开命令行输入 java -version,确认系统默认JRE的版本是否和SDK一致
  • 如果不一致,要么把系统默认JRE换成对应版本,要么执行JAR时指定JDK的java路径,比如:
    C:\Program Files\Java\jdk1.8.0_301\bin\java -jar your-leanft-app.jar
    

2. 确保打包时包含LeanFT的所有依赖

LeanFT项目依赖大量专属库和原生文件(.dll/.so),IDE运行时会自动加载这些资源,但普通JAR包不会包含它们,导致执行时找不到依赖触发错误。推荐打包成Fat JAR(包含所有依赖的可执行JAR):

用IntelliJ自带Artifact打包的步骤:

  • 打开File -> Project Structure -> Artifacts,点击+ -> JAR -> From modules with dependencies
  • 选择你的项目主类(带有main()方法的类)
  • 在Output Layout面板中,确保所有LeanFT相关依赖(比如com.hp.lft.*开头的JAR)、项目依赖都被添加到JAR中
  • 对于LeanFT的原生库,你可以把它们放在JAR同目录的lib文件夹下,执行时通过参数指定路径:
    java -Djava.library.path=./lib -jar your-leanft-app.jar
    

3. 检查Manifest文件的主类配置

如果JAR的Manifest文件没正确指定主类,也会引发类似错误:

  • 解压生成的JAR,打开META-INF/MANIFEST.MF,确认存在一行:
    Main-Class: com.yourpackage.YourMainClass
    
    这里的路径要和你的主类完全匹配(包名+类名),如果用IntelliJ打包,创建Artifact时一定要选对主类,不要留空。

4. 针对Hello World测试项目的验证

如果连简单的Hello World项目打包后都报错,大概率是打包方式不对:

  • 确保你的Hello World类有public static void main(String[] args)方法
  • 用Fat JAR方式打包,不要用普通的JAR打包选项,因为即使是简单项目,LeanFT的基础依赖也必须被包含进去

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:02:46