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, DeploymentBuild ToolsGradle
  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 中执行 FileInvalidate Caches / Restart

预防措施

  1. 保持版本兼容:在选择 Java 和 Gradle 版本时,始终参考官方兼容性矩阵
  2. 统一环境:确保开发环境、构建服务器和团队成员的开发环境使用相同的版本配置
  3. 使用版本管理:通过 .sdkmanrc 或类似工具管理项目特定的 JDK 版本

总结

"Unsupported class file major version 60" 错误本质上是 Java 版本与 Gradle 版本不匹配导致的兼容性问题。通过正确配置 Gradle JVM、升级 Gradle 版本或使用兼容的 Java 版本,可以有效解决这一问题。

注意

在修改任何配置后,务必执行 FileSync Project with Gradle Files 以确保更改生效

如果问题仍然存在,建议检查项目依赖项(如 JUnit、Surefire、Jacoco、Mockito 等)的版本兼容性,确保所有组件都与您使用的 Java 版本兼容。