Skip to content

解决 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(推荐) ​

这是最直接和有效的解决方法:

  1. 打开 IntelliJ IDEA 设置
  2. 导航至:Build, Execution, Deployment → Build Tools → Gradle
  3. 在 Gradle JVM 选项中选择与您项目兼容的 Java 版本
  4. 点击 Apply 应用更改

Gradle JVM 设置

TIP

通常选择与项目 SDK 相同版本的 Java,或者选择 Gradle 支持的较低版本(如 Java 11 或 8)

方法二:升级 Gradle 版本 ​

如果您的 Gradle 版本过旧,可能不支持新的 Java 版本:

  1. 打开项目中的 gradle/wrapper/gradle-wrapper.properties 文件
  2. 修改 distributionUrl 为更新的 Gradle 版本:
properties
# 根据您的 Java 版本选择合适的 Gradle 版本
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
Java 与 Gradle 版本兼容性参考表
Java 版本Gradle 最低支持版本
Java 8-15Gradle 6.x
Java 16Gradle 7.0+
Java 17Gradle 7.3+
Java 18Gradle 7.5+
Java 19-20Gradle 7.6+

方法三:检查 Java 环境变量 ​

确保您的系统环境变量配置正确:

bash
# 检查 JAVA_HOME 设置
echo $JAVA_HOME

# 应该显示类似这样的路径(根据您的实际路径)
# /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

如果 JAVA_HOME 未设置或指向错误的版本,请正确设置环境变量。

方法四:使用兼容的 Java 版本 ​

如果上述方法无效,考虑使用与您 Gradle 版本兼容的 Java 版本:

  1. 卸载当前不兼容的 Java 版本
  2. 安装兼容的 Java 版本(如 Java 11 或 Java 8)
  3. 更新 IntelliJ 中的项目设置和 Gradle JVM 设置

方法五:清理 Java 缓存(适用于特定场景) ​

在某些情况下,清理 Java 语言服务器缓存可以解决问题:

  1. 在 VSCode 中使用 Clean Java Language Server Workspace 命令
  2. 或在 IntelliJ 中执行 File → Invalidate Caches / Restart

预防措施 ​

  1. 保持版本兼容:在选择 Java 和 Gradle 版本时,始终参考官方兼容性矩阵
  2. 统一环境:确保开发环境、构建服务器和团队成员的开发环境使用相同的版本配置
  3. 使用版本管理:通过 .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 版本兼容。