【问题标题】:How can I fix "unsupported class file major version 60" in IntelliJ IDEA?如何在 IntelliJ IDEA 中修复“不支持的类文件主要版本 60”?
【发布时间】: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 不会在终端面板顶部打印确切的命令吗?它通常会。把它和你手动运行的比较一下
  • @CrazyCoder 今天我才知道 Gradle 有自己的 JDK 设置,而不是尊重您为项目设置的设置。 ???谢谢,我从没想过要查一下!
  • 当你知道 IntelliJ 有时会忘记这个设置并从 PROJECT_JDK 切换到某个东西时,你将在明天几岁。
  • 检查您的系统 java,尽管我在 AS 中的设置我的 JAVA_HOME 没有被设置,我必须明确将其设置为环境设置中使用的版本stackoverflow.com/questions/21964709/…

标签: java ubuntu intellij-idea groovy


【解决方案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

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

分级

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

IntelliJ IDEA 设置

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

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

【讨论】:

  • 这对我有用,但我跳过了 GRADLE 步骤
【解决方案4】:

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

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

我认为此字节码设置 (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 上,我执行了以下操作:

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

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

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

    4. 更新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 ```
                  

                  【讨论】:

                    猜你喜欢
                    • 2021-11-25
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-08-31
                    • 2019-09-19
                    • 1970-01-01
                    • 2022-11-08
                    • 2019-07-27
                    相关资源
                    最近更新 更多