如何绕过「文件由更高版本Java Runtime编译」的JNI Java版本错误
你遇到的是Java类文件版本不兼容问题,55.0版本对应Java 11编译的产物,你本地当前实际生效的运行环境是Java 8,最高仅支持52.0版本的类文件。
彻底解决方案
- 先确认当前生效的Java版本
打开终端执行以下两个命令,查看输出的版本号:java -versionjavac -version
如果输出为1.8.x版本,说明全局环境变量配置未生效。 - 修正环境变量配置
- 确认JAVA_HOME路径指向你安装的Java 11+版本的根目录,不要带末尾的bin文件夹,可参考下方的JAVA_HOME截图核对路径正确性
- 打开系统Path变量,将
%JAVA_HOME%\bin条目移动到所有其他Java相关路径的最顶部,避免系统优先调用其他软件捆绑的Java 8程序 - 配置完成后重启所有终端窗口,重新执行
java -version确认版本已经升级到11及以上,再运行目标程序即可正常启动
如果该程序是你自己在Visual Studio中进行编译的,还可以在编译阶段指定字节码兼容版本,实现编译出的程序可在Java 8环境运行:
在编译命令中添加参数:javac -source 1.8 -target 1.8 你的源码文件名.java,也可以直接在IDE的项目编译设置中,将目标字节码版本修改为1.8。
临时绕过命令
如果不需要修改全局环境配置,且你已经安装了Java 11及以上版本,可以直接调用对应版本Java的绝对路径执行程序:
Windows环境示例:"C:\Program Files\Java\jdk-11.0.20\bin\java.exe" -jar 你的程序包名.jar
如果运行的是单个class文件,将-jar 你的程序包名.jar替换为对应类名即可。
注意:不存在可以让低版本Java运行高版本编译类文件的兼容命令,上述方法本质是直接调用已经安装的高版本Java运行程序,仅在你本地已安装对应高版本Java时生效。
相关截图
- JAVA_HOME配置截图:

- 报错信息截图:

内容的提问来源于stack exchange,提问作者camelCase
相关产品推荐
相关产品推荐

