如何在 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、Deployment → Build Tools → Gradle .
在 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
File → Project Structure → Project 对于我正在处理的项目,它不可用。
【讨论】:
你拯救了我的一天? 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 Structure → SDK Location → Gradle Settings → Gradle 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,即使我已经安装了它