由于:java.lang.IllegalArgumentException: Unsupported class file major version 60

9

配置: Java : 16
Gradle : 7.2
Jacoco : 0.8.4

当我将项目从openJDK8升级到openJDk16时,出现了以下问题:

"Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 60"

还有以下问题:
java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/security/ec/SunEC$1. at org.jacoco.agent.rt.internal_035b120.CoverageTransformer.transform(CoverageTransformer.java:93) at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244


错误实际上意味着该类是使用更高的Java版本(16)编译的,但在较低的版本(8)上运行。 通过命令检查gradle JVM版本:./gradlew -version,并确保gradle使用16(检查环境变量中的JAVA_HOME)。 - J-Alex
1
这个回答解决了您的问题吗?如何在IntelliJ中解决“unsupported class file major version 60”的问题? - Martin Zeitler
2个回答

3

当我将我的项目升级到使用JDK17时(即,不支持的类文件主要版本61),我遇到了类似的问题。

解决方案是在我的pom中将jacoco maven插件升级到0.8.8版本。

        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.8</version>
            ...

这个 GitHub 的讨论串也和此相关: https://github.com/mapstruct/mapstruct/issues/2835


1

我曾经遇到过类似的问题,并通过在我喜欢的IDE(IntelliJ)中链接Gradle JVM设置来解决它(其他IDE也应该可以):

  1. 在“设置/首选项”对话框中,转到“构建、执行、部署| 构建工具 | Gradle”。

  2. 在Gradle部分下,更改Gradle JVM选项。

如果您正在使用Intellij,您可以在此主题 这里 上了解更多信息。


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