我该如何在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个回答

5

正如上面提到的,更改具有正确兼容性的页面:兼容矩阵

在我的情况下,我使用JDK 17,Java 8适用于我!

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

5
我遇到了相同的问题。看起来JDK 17与Gradle 7.0.2不兼容。
下载JDK 16,把它放在_某个地方_(靠近其他JDK文件夹或任何地方)。
接下来,更新:项目结构SDK位置Gradle设置Gradle JDK以匹配_某个地方_
最后,别忘了与Gradle文件同步项目

2

目前,它不能与JDK 17一起使用,建议在设置/Gradle中使用IDE提供的嵌入式Java。


2
我的项目使用Java 16和Maven构建Spring Boot应用程序。我遇到了相同的错误,并通过以下步骤解决了它:
  1. 导航到IntelliJ IDEA → Preferences...Build, Execution, DeploymentCompiler → *Java Compiler
  2. 在“每个模块的字节码版本”下选择您的模块
  3. 单击红色“-”按钮以删除自定义设置
  4. 单击Apply
我认为这个字节码设置(16)与我项目中配置的设置(11)发生了冲突。删除覆盖就解决了这个问题。

1

我通过安装Chocolatey软件包管理器并运行它来解决了这个问题。

choco install -y nodejs.install openjdk8

在 PowerShell 管理员中。


1
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


0

我遇到了相同的错误。这是由于Java的不同版本引起的。您可以根据与其相关的版本找到错误消息。 19 - 63 18- 62 17- 61 16- 60 15- 59 14- 58 13- 57 12- 56 11- 55 10- 54 9 -53 8 -52

因此,您需要做的就是进入项目结构,通过更改项目的SDK和版本来使其符合上述表格,然后进行编译。同时,请参考附图。 enter image description here


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