升级Java 17后IntelliJ运行多模块项目失败求助
解决Java版本不兼容的UnsupportedClassVersionError问题
核心问题拆解
报错里的class file version 61.0对应Java 17,58.0对应Java 14——说白了就是你用Java17编译了代码,但运行时调用的是Java14或更低版本的JVM,版本不匹配导致报错。
具体修复步骤
检查项目SDK与语言级配置
打开File -> Project Structure(Mac是IntelliJ IDEA -> 设置 -> 项目结构):- 在「Project」标签页,确认
Project SDK选的是temurin-17,Project language level设为17(或选SDK默认) - 切换到「Modules」标签页,逐个检查每个模块的
Language level,确保全设为17
- 在「Project」标签页,确认
修正运行配置的JVM版本
点击右上角运行/调试配置的下拉框,选「Edit Configurations」:- 找到你的项目运行配置(比如对应MainKt的Application配置)
- 在「Configuration」标签页,把
JRE选项直接指定为temurin-17,别用Default(防止默认指向旧JDK)
彻底清理旧编译产物
- 点IntelliJ工具栏的
Build -> Clean Project - Gradle项目的话,在终端执行
./gradlew clean build(Mac/Linux)或gradlew clean build(Windows),把旧字节码全清了再重新编译
- 点IntelliJ工具栏的
校验IntelliJ终端的Java版本
在IntelliJ内置终端里执行java -version和javac -version,确认输出都是17.0.3-tem。如果不一致,去设置 -> 工具 -> 终端,勾选「用原生环境运行终端」,确保终端继承SDKMAN的配置硬编码Gradle的Java版本配置
直接在build.gradle(或build.gradle.kts)里明确指定Java17,避免依赖默认配置:
Groovy版build.gradle:plugins { id 'java' id 'org.jetbrains.kotlin.jvm' version '1.8.22' } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlin { jvmToolchain(17) }Kotlin版
build.gradle.kts:plugins { java kotlin("jvm") version "1.8.22" } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlin { jvmToolchain(17) }
验证修复
做完上面的步骤后重新运行项目,要是还报错,重启IntelliJ让所有配置生效再试。
内容的提问来源于stack exchange,提问作者Ludwig
相关产品推荐
相关产品推荐

