文章目录
一、package打包报错
错误信息
[WARNING] Error injecting: org.springframework.boot.maven.RepackageMojo
java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo not present
Caused by: java.lang.UnsupportedClassVersionError: org/springframework/boot/maven/RepackageMojo 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
二、问题解决
错误原因:
spring-boot-maven-pluginb不写版本号的话,Maven 会使用最新的版本,这个错误是使用的 Java 版本低于 Spring Boot Maven 插件编译时使用的 Java 版本。插件需要 Java 17(class file version 61),但使用的 Java 版本仅支持到 Java 8(class file version 52)。
解决方案:
- 升级 Java 版本(繁琐不打算采用)
下载并安装 Java 17 或更高版本。
将 JAVA_HOME 环境变量设置为新的 Java 安装目录。
重启 IDE 或命令行窗口以使更改生效。
- 调整 Maven 配置(不升级 Java版本)
在 pom.xml 文件中指定插件的编译版本:
不写版本号,Maven 会默认使用最新的版本。
例如,要使用 Spring Boot 2.4.3 版本,您可以将 spring-boot-maven-plugin 插件的 version 属性设置为 2.4.3:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.3</version>
</plugin>
再执行package打包成功
还可以使用 Maven 的 dependencyManagement
元素来指定依赖项的版本。例如,要指定 Spring Boot 2.6.4 版本,您可以将以下内容添加到 pom.xml 文件中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这样,Maven 在解析依赖项时将使用 dependencyManagement
元素中指定的版本。
再执行package打包成功