解决 IntelliJ IDEA 中的 "Unsupported class file major version 60" 错误
问题描述
当在 IntelliJ IDEA 中打开 Gradle 项目时,可能会遇到以下错误:
* Where:
Initialization script '/tmp/ijmapper.gradle`
* What went wrong:
Could not compile initialization script '/tmp/ijmapper.gradle`.
> Startup failed:
General error during semantic analysis: Unsupported class file major version 60.
这个错误通常伴随着一个冗长的 Groovy 堆栈跟踪,即使项目本身是 Java 项目而非 Groovy 项目。
版本号说明
Java 类文件中的 "major version" 数字对应特定 Java 版本:
- 60 = Java 16
- 59 = Java 15
- 58 = Java 14
- 57 = Java 13
错误原因
此错误通常表示 Java 版本与 Gradle 版本之间存在兼容性问题。当您安装了较新版本的 Java(如 Java 16+),但使用的 Gradle 版本不支持该 Java 版本时,就会出现此问题。
解决方案
方法一:检查并设置正确的 Gradle JVM(推荐)
这是最直接和有效的解决方法:
- 打开 IntelliJ IDEA 设置
- 导航至:Build, Execution, Deployment → Build Tools → Gradle
- 在 Gradle JVM 选项中选择与您项目兼容的 Java 版本
- 点击 Apply 应用更改
TIP
通常选择与项目 SDK 相同版本的 Java,或者选择 Gradle 支持的较低版本(如 Java 11 或 8)
方法二:升级 Gradle 版本
如果您的 Gradle 版本过旧,可能不支持新的 Java 版本:
- 打开项目中的
gradle/wrapper/gradle-wrapper.properties
文件 - 修改
distributionUrl
为更新的 Gradle 版本:
# 根据您的 Java 版本选择合适的 Gradle 版本
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
Java 与 Gradle 版本兼容性参考表
Java 版本 | Gradle 最低支持版本 |
---|---|
Java 8-15 | Gradle 6.x |
Java 16 | Gradle 7.0+ |
Java 17 | Gradle 7.3+ |
Java 18 | Gradle 7.5+ |
Java 19-20 | Gradle 7.6+ |
方法三:检查 Java 环境变量
确保您的系统环境变量配置正确:
# 检查 JAVA_HOME 设置
echo $JAVA_HOME
# 应该显示类似这样的路径(根据您的实际路径)
# /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
如果 JAVA_HOME
未设置或指向错误的版本,请正确设置环境变量。
方法四:使用兼容的 Java 版本
如果上述方法无效,考虑使用与您 Gradle 版本兼容的 Java 版本:
- 卸载当前不兼容的 Java 版本
- 安装兼容的 Java 版本(如 Java 11 或 Java 8)
- 更新 IntelliJ 中的项目设置和 Gradle JVM 设置
方法五:清理 Java 缓存(适用于特定场景)
在某些情况下,清理 Java 语言服务器缓存可以解决问题:
- 在 VSCode 中使用
Clean Java Language Server Workspace
命令 - 或在 IntelliJ 中执行 File → Invalidate Caches / Restart
预防措施
- 保持版本兼容:在选择 Java 和 Gradle 版本时,始终参考官方兼容性矩阵
- 统一环境:确保开发环境、构建服务器和团队成员的开发环境使用相同的版本配置
- 使用版本管理:通过
.sdkmanrc
或类似工具管理项目特定的 JDK 版本
总结
"Unsupported class file major version 60" 错误本质上是 Java 版本与 Gradle 版本不匹配导致的兼容性问题。通过正确配置 Gradle JVM、升级 Gradle 版本或使用兼容的 Java 版本,可以有效解决这一问题。
注意
在修改任何配置后,务必执行 File → Sync Project with Gradle Files 以确保更改生效
如果问题仍然存在,建议检查项目依赖项(如 JUnit、Surefire、Jacoco、Mockito 等)的版本兼容性,确保所有组件都与您使用的 Java 版本兼容。