如何在 IntelliJ IDEA 中修复“不支持的类文件主要版本 60”?

Posted

技术标签:

【中文标题】如何在 IntelliJ IDEA 中修复“不支持的类文件主要版本 60”?【英文标题】:How can I fix "unsupported class file major version 60" in IntelliJ IDEA? 【发布时间】:2021-07-08 18:29:36 【问题描述】:

我在 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 项目。)

Major version 60 refers to Java 16, 此项目未使用。我已经进入 Project Structure 并确保它设置为使用 JDK 版本 14。但名称“ijmapper”表明这与 IntelliJ 有特殊关系,这可能是一个 IDE问题而不是项目问题。

映射器文件简单地说:

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

换句话说,一个简单的 polyfill。

这是怎么回事,我该如何解决?

【问题讨论】:

你是如何在 Intellij 中运行它的? intellij 不会在终端面板顶部打印确切的命令吗?它通常会。把它和你手动运行的比较一下 ***.com/a/66879514/104891 有帮助吗? @CrazyCoder 今天我才知道 Gradle 有自己的 JDK 设置,而不是尊重您为项目设置的设置。 ???谢谢,我从没想过要查一下! 当你知道 IntelliJ 有时会忘记这个设置并从 PROJECT_JDK 切换到某个东西时,你将在明天几岁。 检查您的系统 java,尽管我在 AS 中的设置我的 JAVA_HOME 没有被设置,我必须明确将其设置为环境设置中使用的版本***.com/questions/21964709/… 【参考方案1】:

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

Settings/Preferences 对话框中,转到 Build、Execution、DeploymentBuild ToolsGradle .

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

Resolve the Gradle JVM version for the existing project

【讨论】:

提及适合您的设置以及您之前使用的帽子会有所帮助。 刚刚在 kotlin 教程 github.com/kotlin-hands-on/intro-coroutines 上遇到了问题。将 Gradle JVM 更改为 1.8 解决了这个问题 我从 JDK 16 降级到 JDK 15 以成功构建我的应用程序。 对我不起作用 - 几个构建都正常,然后它发出相同的消息。烦人的是项目向导主动提出要为我安装16,但是却无法使用…… 这种方法真的救了我一天!昨天换了OJDK17,效果很好。不知道为什么今天它说所有错误,我必须回到 JDK15 和所有好的东西。【参考方案2】:

将 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 中,类路径更改为“com.android.tools.build:gradle:7.0.1”。在我的机器上 java 16.0.1、Flutter 2.2.3、Dart 2.13.4 Gradle(版本> 7.3.2)现在支持在 Java 17 上运行和构建。【参考方案3】:

我也修好了,很难:

Java

    安装了最新的 Java JDK 通过添加JAVA_HOME变量(没有bin的主要Java文件夹)修复了系统环境变量中的Java路径并添加了%JAVA_HOME%\bin em> 到 PATH 环境变量 java -version 现在显示正确的版本

分级

    使用 https://gradle.org/install/ 从头开始​​安装 Gradle 通过添加 GRADLE_HOME 变量(没有 bin 的主 Gradle 文件夹)修复了系统环境变量中的 Gradle 路径并添加了 %GRADLE_HOME%\bin em> 到 PATH 环境变量 gradle -version 现在显示正确的版本,包括。正确的 JVM

IntelliJ IDEA 设置

    转到设置构建、执行、部署构建工具Gradle 编辑 Gradle 用户主页 (C:/Gradle/gradle-7.0.2) 使用来自:C:/Gradle/gradle-7.0.2 的 Gradle Gradle JVM:JAVA_HOME 版本 16.0.1

现在它构建没有错误:不支持的类文件主要版本 60

【讨论】:

这对我有用,但我跳过了 GRADLE 步骤【参考方案4】:

我的项目正在使用 Java 16 和 Maven 构建 Spring Boot 应用程序。我遇到了同样的错误,并且能够通过以下步骤解决它:

    导航到 IntelliJ IDEA → 首选项...构建、执行、部署编译器 → *Java 编译器 在“Per-module bytecode version:”下选择您的模块 点击红色“-”按钮删除自定义设置 点击应用

我认为此字节码设置 (16) 与我的项目中配置的 (11) 冲突。删除覆盖清除它。

【讨论】:

【参考方案5】:

对我来说,它是通过升级 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

FileProject StructureProject 对于我正在处理的项目,它不可用。

【讨论】:

你拯救了我的一天? Gradle(版本> 7.3.2)现在支持在 Java 17 上运行和构建。 感谢您的回答!很有帮助。 你拯救了我的一天!【参考方案6】:

对我来说,(Flutter)问题是我使用的是 Java JDK 版本 16,但对于某些包,版本 16 是 not supported。

所以,我降级到JDK版本15

在 Windows 上,我执行了以下操作:

    关闭您当前的 IDE/终端(不要跳过此步骤)。

    卸载当前的 Java JDK 并重新启动计算机。

    从here 下载并安装 Java JDK 版本 15(您需要创建一个帐户才能下载)。

    更新JAVA_HOME Environment Variable。

【讨论】:

【参考方案7】:

就我而言(Manjaro Linux),问题在于OpenJDK 16 和 Gradle 存在一个已知错误。 (见:*“Unsupported class file major version 60" Using toolchain with Java 16 #16766*)

解决方案是使用以下命令将 Java 指向 openJdk-11:

sudo archlinux-java set java-11-openjdk

确保已安装此 JDK。在 Arch Linux 和 Manjaro 上,您可以通过以下方式进行检查:

archlinux-java status

切换到 OpenJDK 11 后,一切都恢复正常。

【讨论】:

【参考方案8】:

我遇到了同样的问题。 JDK 17 似乎与 Gradle 7.0.2 不兼容。

Download JDK 16,删除它_somewhere_(靠近其他 JDK 的文件夹或其他)

接下来,更新:Project StructureSDK LocationGradle SettingsGradle JDK 以匹配 @ 987654323@

最后,不要忘记将项目与 Gradle 文件同步

【讨论】:

【参考方案9】:

目前它不适用于JDK 17,因此建议使用Settings/Gradle中IDE提供的嵌入式Java。

【讨论】:

【参考方案10】:

我遇到了同样的问题,但使用的是 Android Studio。正如其他人提到的那样,JDK 17 似乎与 Gradle 7.0.2 不兼容。

我通过更改 Android Studio 设置中的 Gradle JDK 设置解决了这个问题:

在菜单中文件设置构建、执行、部署构建工具Gradle .

在 Gradle 部分,将 Gradle JVM 选项更改为另一个 JDK(例如:JDK11)。

更新的 Gradle 版本(高于 7.3.2 的版本)支持在 Java 17 上运行和构建。

【讨论】:

【参考方案11】:

在Spring Tool Suite (STS)/Eclipse 中,即使在将构建路径、编译器、默认JRE 从 16 更改为 11.0 之后,它也没有修复。最后在 STS.ini 文件中,我不得不将 -vm 参数从

-vm plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_16.0.2.v20210721-1149/jre/bin

-vm C:\Program Files\Java\jdk-11.0.12\bin

【讨论】:

【参考方案12】:

我通过安装巧克力包管理器 (https://chocolatey.org/install) 并运行来修复它:

choco install -y nodejs.install openjdk8 

在 powershell 管理员中。

【讨论】:

【参考方案13】:

如上所述,更改具有正确兼容性的 url:https://docs.gradle.org/current/userguide/compatibility.html 在我的情况下是 7.3,因为我使用的是 JDK 17,而 Java 8 对我有用!

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

【讨论】:

以上是关于如何在 IntelliJ IDEA 中修复“不支持的类文件主要版本 60”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复未安装的颤振医生错误android studio和IntelliJ IDEA,即使我已经安装了它

IntelliJ IDEA 旗舰版与社区版有啥不同

如何在 Android Studio 中格式化代码(IntelliJ IDEA)

Intellij idea如何开发php项目

Intellij IDea IDE 修复文件打开方式

修复 IntelliJ IDEA 中 Cucumber 6.8.1运行找不到类的问题