You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JDK20编译的Jar包用JRE1.8运行报UnsupportedClassVersionError

问题:Java打包后运行出现UnsupportedClassVersionError错误

问题场景

  • 使用IntelliJ IDEA(JDK 20.0.2)将Java程序打包为.jar文件,打包过程正常完成,但执行命令 java -jar filename.jar 时抛出以下异常:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 64.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
  • 原以为是JRE版本过旧,更新并多次重装JRE,当前安装的JRE版本为:
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
  • 系统环境变量已配置该JRE路径,当前仅安装此版本JRE;代码在IntelliJ IDEA中可正常运行,但jar包执行仍报错。

解决方案

1. 调整IntelliJ IDEA编译目标版本

确保项目编译时生成的字节码版本与运行的JRE 8兼容:

  • 打开File > Project Structure(快捷键Ctrl+Alt+Shift+S)
    • 进入Project选项卡:设置Project SDK为JDK 8,Project language level选择8 - Lambdas, type annotations etc.
    • 进入Modules选项卡:将每个模块的Language level都设置为8
  • 打开Settings > Build, Execution, Deployment > Compiler > Java Compiler:将Target bytecode version设置为1.8

2. 重新打包jar文件

修改完编译配置后,重新执行打包操作,确保生成的jar文件是基于JDK 8字节码版本编译的。

3. 验证终端运行环境

在执行jar的终端中运行java -version,确认当前使用的确实是JRE 1.8.0_381。如果显示版本不符,重启终端或检查环境变量配置是否生效。

核心原因说明

类文件版本对应关系:64.0对应JDK 20,52.0对应JDK 8。报错本质是高版本JDK编译的字节码无法在低版本JRE上运行。要么降级编译版本到JDK 8,要么升级运行环境到JDK 20及以上。

内容的提问来源于stack exchange,提问作者ElectroN4ick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:22:10