如何在Java 13和Spring中修复Maven中的“Unsupported class file major version 57”错误

8

我遇到了这个错误。

如何修复它?

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

我有这样的POM。
 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
</parent>

<properties>
    <java.version>13</java.version>
</properties>

这个项目有许多文字字面量,因此需要使用Java 13。


很可能,Spring 还不支持 Java 13。尝试在 javac 命令行或 pom.xml 中添加 -target 12<properties> <maven.compiler.target>12</maven.compiler.target> - Erwin Bolwidt
我认为需要使用Spring 2.2,但是该如何添加它呢? - Arthur
4个回答

14

在pom.xml文件中更改Spring Boot版本解决了我的问题。

   <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
   </parent>

3

Spring Boot 2.2.0版本尚未发布,但有一个里程碑版本(M4)。如果你想使用它,需要在pom.xml文件中添加另一个maven存储库:

<repositories>
    <repository> 
        <id>repository.spring.milestone</id> 
        <name>Spring Milestone Repository</name> 
        <url>http://repo.spring.io/milestone</url> 
    </repository>
</repositories>

您可以依赖里程碑版本进行构建:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.M4</version>
</parent>

参见: https://www.baeldung.com/spring-maven-repository


2
我在执行以下操作之前意外升级了Java:
./gradlew wrapper --gradle-version 6.2.2 --debug --stacktrace

这是我能升级到jdk13和gradle 6.2.2的唯一可靠方法。可能有更简单、不那么破坏性的方法,但这对我有效。


为了解决这个问题,我安装了最新的gradle。

brew install gradle

从项目根目录开始,将现有的构建和设置移动到临时位置。
mv build.gradle build.gradle.old
mv settings.gradle settings.gradle.old

重新初始化Gradle应用程序并按照提示操作。
gradle init

把构建和设置移到原来的位置。
mv build.gradle.old build.gradle
mv settings.gradle.old settings.gradle

重建您的项目。

0

我尝试了之前发布的答案,但都没有解决我的问题。以下方法成功了:

我知道我的Spring Boot项目应该使用JAVA 11运行。但是在我的新笔记本电脑上,它无法运行,并显示相同的错误警告,指出文件主要版本为57。

  1. 通过在Windows控制台中运行JAVA -version,我检查了HOME_PATH是否指向JAVA 11。它只显示了Java 11,所以没问题。

  2. 检查project structure -> SDKs -> 这里我发现列表中还有另一个SDK(Azul 13)。我将其删除后,再次构建项目以检查JVM时出现了错误。

  3. Gradle JVM仍然指向'azul 13' -> 将其更改为JAVA_HOME

enter image description here

然后它就工作了。


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