使用Windows PowerShell运行Java Jar遇JNI错误,双击正常如何解决?
解决PowerShell运行Jar报JNI错误但双击正常的问题
这种情况我之前碰到过好几次,核心原因几乎都是PowerShell调用的Java版本与双击Jar时使用的版本不匹配,下面是具体的排查和解决步骤:
1. 确认双击Jar时使用的Java版本
- 右键目标Jar文件 → 选择「打开方式」→ 点击「更多应用」→ 找到默认打开的
javaw.exe,右键它选择「打开文件所在位置」 - 打开该路径的命令提示符(在地址栏输入
cmd回车),执行以下命令查看版本:
记下输出的版本号(比如.\javaw -version1.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




