Runnable Jar运行抛出UnsupportedClassVersionError问题求助
问题成因
- Java的class文件有对应版本号,不同JDK/JRE版本绑定固定的class版本:JDK 1.8对应版本52.0,JDK 17对应版本61.0。
- 你开发时用JRE 17编译代码,生成的class文件是61.0版本,但运行Jar时系统默认调用的是JDK 1.8的JRE,它仅支持最高52.0版本的class文件,版本不匹配直接触发报错。
- Eclipse内运行正常是因为你指定了用JRE 17执行,编译版本和运行版本一致;但导出Jar后,系统会使用默认的Java环境(此处为1.8),因此出现兼容性问题。
解决方法
方法一:用JDK 17运行Jar文件
- 找到JDK 17安装目录下的
java.exe,通过命令行执行:"C:\Program Files\Java\jdk-17.x.x\bin\java" -jar 你的Jar文件名.jar - 或者将JDK 17设为系统默认Java环境:修改系统环境变量的
JAVA_HOME为JDK 17的安装路径,同时调整Path变量,把JDK 17的bin目录移到最前方。
方法二:重新编译代码为JDK 1.8兼容版本
- 打开Eclipse,右键你的项目 → 属性 → Java编译器
- 勾选「启用项目特定设置」,将「编译器合规性级别」改为1.8
- 切换到「Java Build Path」选项卡,移除当前的JRE系统库,添加JDK 1.8的JRE
- 重新导出Runnable Jar文件,此时生成的class文件版本为52.0,可直接用JDK 1.8运行。
内容的提问来源于stack exchange,提问作者VACN
相关产品推荐
相关产品推荐

