当前位置: 首页 > 知识库问答 >
问题:

Maven surefire plugin 2.22.2版本在spring boot中对Junit 5测试用例失败,错误不支持类文件主版本56

公西宏峻
2023-03-14

Spring boot应用程序2.1.7的Junit 5测试用例。发布失败,intelij中出现以下错误。

[ERROR]无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.22.2:测试(默认测试)在项目域:执行默认测试的目标org.apache.maven.plugins:maven-surefire-plugin:2.22.2:测试失败:不支持的类文件主要版本56-

使用Java9模块化

应用程序在maven中构建,无需测试用例即可运行。

使用的maven surefire插件版本2.22.1在命令行和intellij中失败

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
        </plugin>



        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>--add-modules=java.xml.ws.annotation</jvmArguments>
            </configuration>
        </plugin>

共有3个答案

胡意致
2023-03-14

在Maven构建中执行的JVM并不是您所认为的那样。您需要Java12来执行编译后的代码,而出于某种原因,Maven似乎使用了Java11。

魏君博
2023-03-14

这是由maven-surefire插件所依赖的旧版本的ash引起的。

如果您使用mvn test-X运行maven构建,您应该会看到版本6。asm的x用于插件。

旧版本无法在新字节码上使用反射,而不依赖于执行的运行时,这就是问题的真正原因。

试试这个,对我来说很管用:

       <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <dependencies>
                <dependency>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                    <version>7.3.1</version>
                </dependency>
            </dependencies>
        </plugin>

您可能需要将其添加到父pom的依赖项管理配置中,以确保它正确应用于所有子项目。

柯瀚玥
2023-03-14

从错误日志中可以看到,子模块正在使用maven surefire插件2.22.2。解决方案是定义所有模块使用的maven插件版本,将此部分添加到主pom中。xml:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>12</release>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

我可以在删除Oracle依赖后编译它,我不知道你是否需要这样做。如果它对你有用,请在问题中发表评论。

 类似资料:
  • 我正在尝试运行一个颤振应用程序,在尝试时出现了这个错误,我所做的是我想在没有android studio的情况下运行颤振应用程序,所以我下载了android SDK和JDK 17,在我运行颤振医生后,它告诉我一切都很好,我尝试运行,它给了我这个错误: 所以我尝试了一个旧版本的JDK,它给了我另一个错误,所以我看到了使用JDK 17运行的第三个解决方案,那就是降级gradle中的gradle。属性,

  • Gradle同步失败:不支持的类文件主版本60(13 m 44 s 731 ms) 无法为初始化脚本'C:\User\umer\AppData\Local\Temp\ijresolvers.gradle'打开初始化泛型类缓存(C:\User\umer.gradle\cache\6.7.1\script\c6td7o6d0dhgcyioq91fpl38q)。 缺陷源单元“BuildScript”中的

  • 我将我的Android Studio项目从一台计算机移动到另一台计算机,现在我发现错误: “不支持的类文件主版本61”。 我该怎么解决这个问题?

  • 我之前遇到此错误[不支持的类文件主版本57] 这个错误意味着我的Java版本与Gradle编译时的版本不兼容。 我的Gradle版本是Gradle 6.0.1,JDK版本是openjdk 13.0.2。 所以我将JDK降级为JDK 11,问题就解决了。 我能够在终端中运行任务"./gradlew spot bugsMain"。以及在shell命令中使用WebUI的Jenkins。这项工作工作正常,

  • 嗨,我在构建我的gradle项目时遇到了这个错误,尝试了在这里在线找到的所有内容如何修复IntelliJ IDEA中的“不支持的类文件主要版本60”? 我通过从计算机中删除java 17解决了这个问题。。但是不想删除java 17版本,仍然想编译我的代码

  • 当我构建我的应用程序时,我得到了以下错误。任何帮助都将不胜感激。 根:生成。格拉德尔 settings.gradle 应用程序:生成。格拉德尔 失败:生成失败,出现异常*其中:设置文件“/Users/Documents/android/MyApplication5/Settings。gradle“*出了什么问题:无法编译设置文件”//Users/anand/Documents/android/My