当我的活跃jdk是JDK8时,尝试使用Maven工具链编译Java 17项目。我设置了我的工具链,以使用JDK17来编译它,但在运行测试时,此编译失败并显示以下错误:
Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7:test failed: java.lang.UnsupportedClassVersionError: my/source/ControllerTest has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0.
我的pom工具链配置,用于编译器和Surefire插件(版本M7):
<properties>
.....
<toolchain>17</toolchain>
<vendor>oracle</vendor>
</properties>
....
....
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<configuration>
<jdkToolchain>
<version>${toolchain}</version>
<vendor>${vendor}</vendor>
</jdkToolchain>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<jdkToolchain>
<version>${toolchain}</version>
<vendor>${vendor}</vendor>
</jdkToolchain>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<jdkToolchain>
<version>${toolchain}</version>
<vendor>${vendor}</vendor>
</jdkToolchain>
<argLine>@{surefireArgLine}</argLine>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<includes>
<include>**/**Test.java</include>
</includes>
</config>
为什么我的工具链配置没有被surefire识别?编译本身没有问题,但是surefire测试阶段失败了。感谢您的帮助。