我该如何在IntelliJ IDEA中修复“unsupported class file major version 60”的问题?

202

我在Ubuntu上有一个Gradle项目。它是用Java 14编写的,我已经安装了Java 14 JDK。当我从命令行构建它时,一切都正常,但没有人想要使用命令行!当我在IntelliJ IDEA中打开它时,它会抛出一个错误:

* 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的很多问题。(该项目不是Groovy项目;它是Java项目。)

主要版本60指的是Java 16,而这个项目没有使用。我已经进入Project Structure并确保它设置为使用JDK 14版本。但是“ijmapper”这个名字表明这与IntelliJ有关,这很可能是IDE问题而不是项目问题。

映射文件只是简单地说:

if(!ext.has('mapPath')) ext.mapPath = { path -> path}

换句话说,这是一个简单的填充程序。

这里到底发生了什么,我该如何解决?


3
这篇文章 https://dev59.com/XsDqa4cB1Zd3GeqPWRws#66879514 对你有帮助吗? - CrazyCoder
3
@CrazyCoder,今天我才知道Gradle有自己的JDK设置,而不是遵循你为项目设置的JDK。谢谢,我从来没有想过要查找这个! - Mason Wheeler
2
当你明天发现IntelliJ有时会忘记这个设置并从PROJECT_JDK切换到其他东西时,你将会比今天老一岁。 - cfrick
检查您的系统Java,尽管我在AS中进行了设置,但我的JAVA_HOME未被设置,我不得不明确地将其设置为环境设置中使用的版本。参考链接:https://dev59.com/7mEh5IYBdhLWcg3w1mbs - raddrick
尝试使用jdk-15进行gradle配置。 - MinhajulAnwar
显示剩余2条评论
17个回答

191

TL;DR; 您需要安装与Gradle版本兼容的Java版本,并配置Gradle使用该版本(不能是旧版Java,也不能是更新的版本)。


我通过更改IntelliJ设置中的Gradle JVM设置来解决了这个问题:

  • 设置/首选项对话框中,进入构建、执行、部署构建工具Gradle

  • Gradle部分下,更改Gradle JVM选项。选择适合您的Gradle JVM

    Enter image description here

有关详细信息,请参见为现有项目解析Gradle JVM版本


23
提及哪种设置适用于您以及您之前使用过的设置会有所帮助。 - phant0m
5
刚刚在看 Kotlin 教程时遇到了问题,解决方法是将 Gradle 的 JVM 版本更改为 1.8。 - vincent
2
我将JDK 16降级到JDK 15以成功构建我的应用程序。 - Ben Butterworth
2
对我没用 - 有几个构建还好,然后就出现了相同的错误信息。令人烦恼的是,项目向导提供安装16给我,但它无法使用... - Tullochgorum
这种方法真的救了我的一天!昨天,我切换到OJDK17并且运行得非常好。不知道为什么今天它显示所有错误,我不得不回退到JDK15,然后一切都恢复正常了。 - Tiny Sonhh
显示剩余5条评论

77

对我而言,通过升级Gradle版本来解决了这个问题。

在目录gradle/wrapper/gradle-wrapper.properties下的文件中,只需要更改Gradle的版本号即可。例如,如果你的Gradle版本是6.3,则更改为:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip

至:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip

我正在处理的项目中,在文件项目结构项目中找不到它。


7
Gradle(版本> 7.3.2)现在支持在Java 17上运行和构建。 - MohamedHarmoush
1
这个兼容性表帮助我选择了正确的版本 https://docs.gradle.org/current/userguide/compatibility.html#java - tamj0rd2
1
这对我很有用,因为我无法通过IntelliJ的Settings/Preferences -> Build,Execution, Deployment -> Build Tools -> Gradle更改Gradle JVM设置(在我的情况下,Gradle部分根本不存在)。 您可以在此页面上找到与您的Gradle版本相匹配的JDK,反之亦然: https://docs.gradle.org/current/userguide/compatibility.html - Kristian Heitkamp
如此简单,如此有效!我原本使用的是7.2版本和Java 19,根据兼容性表格修改为了7.6版本,立刻成功启动。 - MiB

21

将Gradle版本从6.8.3升级到7.0解决了我的问题。您可以进行升级:

  • 菜单文件项目结构项目(在左侧面板上)
  • 更改为Gradle版本7.0

该方法适用于Android Gradle插件版本4.2.0。


谢谢。在将Gradle版本更新为7.0.2和Android Gradle插件版本从4.1.0更新到7.0.1后,它可以正常工作。在文件android/build.grandle中,classpath更改为'com.android.tools.build:gradle:7.0.1'。在我的机器上,Java版本是16.0.1,Flutter版本是2.2.3,Dart版本是2.13.4。 - wondertalik
1
Gradle(版本> 7.3.2)现在支持在Java 17上运行和构建。 - MohamedHarmoush

12
为了解决"Unsupported class file major version 63"的问题,我们需要将gradle更新到v7.6版本。
// gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip

11
在Flutter中,我的问题是我使用了Java JDK版本16,但某些包不支持版本16。因此,我将其降级为JDK版本15。
在Windows上,我执行以下操作:
1. 关闭当前的IDE / 终端(不要跳过此步骤)。 2. 卸载当前的Java JDK并重新启动计算机。 3. 从这里下载和安装Java JDK版本15(您需要创建一个帐户才能下载)。 4. 更新JAVA_HOME环境变量。

10

9

我也采取了较麻烦的方法来解决这个问题:

Java

  1. 安装了最新的Java JDK
  2. 通过添加 JAVA_HOME 变量(主Java文件夹而不带 bin)并将 % JAVA_HOME%\bin 添加到 PATH 环境变量中,修复了系统环境变量中的Java路径。
  3. java -version现在显示正确的版本

Gradle

  1. 使用https://gradle.org/install/从头安装Gradle
  2. 通过添加 GRADLE_HOME 变量(主Gradle文件夹而不带 bin)并将 % GRADLE_HOME%\bin 添加到 PATH 环境变量中,修复了系统环境变量中的Gradle路径
  3. gradle -version 显示了正确的版本,包括正确的JVM

IntelliJ IDEA 设置

  1. 前往 SettingsBuild, Execution, DeploymentBuild ToolsGradle
  2. 编辑 Gradle 用户目录(C:/Gradle/gradle-7.0.2)
  3. 使用 Gradle 目录: C:/Gradle/gradle-7.0.2
  4. Gradle JVM:使用 JAVA_HOME 版本 16.0.1

现在可以成功构建,不会出现错误:Unsupported class file major version 60


这对我起作用了,但我跳过了GRADLE步骤。 - Amit Goswami

8

需要正确版本的Java,以下是列表:

Java SE 19 = 63,
Java SE 18 = 62,
Java SE 17 = 61,
Java SE 16 = 60, 
Java SE 15 = 59,
Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

8
我遇到了相同的问题,但是是在使用Android Studio时。似乎JDK 17与Gradle 7.0.2不兼容,这点其他人也提到了。
我通过更改Android Studio设置中Gradle JDK设置来解决这个问题:
在菜单栏中选择FileSettingsBuild, Execution, DeploymentBuild ToolsGradle
在Gradle部分中,将Gradle JVM选项更改为另一个JDK(例如:JDK11)。
后续的Gradle版本(版本大于7.3.2)支持在Java 17上运行和构建。

5

2022年12月31日更新

对于所有遇到此问题但尚未找到解决方案的人, 首先,您必须检查您的Java版本以及支持它的第一个Gradle版本在兼容性矩阵中的兼容性。

然后,您需要更改以下位置中的distributionUrlandroid/gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接