JDK与JRE版本不兼容引发UnsupportedClassVersionError问题求助
解决 UnsupportedClassVersionError 编译运行版本不兼容问题
这个问题的核心很明确:你用JDK 12.0.1编译了hello.java,生成的class文件版本是56.0(对应JDK12),但运行时用的是JDK 1.8.0_211——它只能识别最高52.0版本的class文件,所以出现了版本不兼容的错误。
这里有几个可行的解决办法,你可以根据自己的需求选择:
方法一:用JDK12直接运行程序
既然你已经安装了JDK12,不用改环境变量,直接调用它的java命令就能运行:
D:\jdk-12.0.1\bin\java hello
方法二:用JDK8重新编译程序(适合需要在JDK8环境运行的场景)
如果你的代码不需要JDK12的专属特性,你可以切换到JDK8环境编译,或者在编译时指定目标版本为JDK8:
- 找到JDK8的javac路径(比如你的JDK8安装目录下的bin文件夹),用绝对路径编译:
# 假设JDK8安装在C:\Program Files\Java\jdk1.8.0_211\bin "C:\Program Files\Java\jdk1.8.0_211\bin\javac" hello.java - 或者如果当前终端的javac是JDK12的,编译时加上版本参数:
注意:如果你的代码里用了JDK8不支持的语法或API,这个命令会报错,需要修改代码去掉这些特性。javac -source 1.8 -target 1.8 hello.java
方法三:统一环境变量,确保编译和运行用同一版本的JDK
如果想长期固定用某个版本的JDK,建议配置系统环境变量:
- 若默认用JDK12:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量中设置
JAVA_HOME为D:\jdk-12.0.1 - 在
PATH变量里,把%JAVA_HOME%\bin移到最前端 - 重启终端,输入
java -version和javac -version确认版本都是12.0.1
- 若默认用JDK8:
同理,把JAVA_HOME设为JDK8的安装路径,将JDK8的bin目录放在PATH最前面即可。
内容的提问来源于stack exchange,提问作者Vasya Krenta vkrenta
相关产品推荐
相关产品推荐

