You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Windows PowerShell运行Java Jar遇JNI错误,双击正常如何解决?

解决PowerShell运行Jar报JNI错误但双击正常的问题

这种情况我之前碰到过好几次,核心原因几乎都是PowerShell调用的Java版本与双击Jar时使用的版本不匹配,下面是具体的排查和解决步骤:

1. 确认双击Jar时使用的Java版本

  • 右键目标Jar文件 → 选择「打开方式」→ 点击「更多应用」→ 找到默认打开的javaw.exe,右键它选择「打开文件所在位置」
  • 打开该路径的命令提示符(在地址栏输入cmd回车),执行以下命令查看版本:
    .\javaw -version
    
    记下输出的版本号(比如1.8.0_301

2. 检查PowerShell中的Java版本

打开PowerShell,执行命令:

java -version

对比这个版本和刚才记下的版本,如果不一致,就找到了问题根源。

3. 针对性解决方法

方法一:临时指定Java版本运行(单次有效)

直接在PowerShell中使用对应版本的java.exe完整路径来运行Jar:

& "C:\Program Files\Java\jre1.8.0_301\bin\java.exe" -jar filename.jar

(把路径替换成你刚才找到的正确Java版本的bin目录路径)

方法二:修改系统PATH永久切换版本

  • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  • 在「系统变量」列表中找到Path,点击「编辑」
  • 将你找到的正确Java版本的bin路径(比如C:\Program Files\Java\jre1.8.0_301\bin)移到列表的最顶部
  • 重启PowerShell,再次执行java -version确认版本已切换,之后直接用java -jar filename.jar即可正常运行

方法三:检查Jar的版本要求

如果版本一致还是报错,可以检查Jar的编译版本要求:

  • 将Jar文件重命名为.zip格式并解压,找到META-INF/MANIFEST.MF文件
  • 查看文件中是否有Java-Version字段,确认PowerShell中的Java版本是否满足该要求

内容的提问来源于stack exchange,提问作者Kumar Anil Chaurasiya

火山引擎 最新活动