spring-boot-maven-plugin未指定版本導致的編譯錯誤問題
spring-boot-maven-plugin未指定版本導致的編譯錯誤
報錯
springboot應(yīng)用在使用maven編譯時會報如下錯誤:
Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.0.0-M2:repackage (default) on project mis: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:3.0.0-M2:repackage failed: Unable to load the mojo 'repackage' in the plugin 'org.springframework.boot:spring-boot-maven-plugin:3.0.0-M2' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: 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
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
原因
原因是maven在編譯打包過程中沒有指定spring-boot-maven-plugin的版本,默認會從nexus倉庫中拉取最新的打包插件版本,而最新的3.0.0版本不被jdk8支持,無法執(zhí)行編譯。
解決方案
需要用戶在pom.xml文件中手動指定spring-boot-maven-plugin該插件的打包版本。
如:
加上版本<version>2.2.6.RELEASE</version>
<build>
? ? ? ? <plugins>
? ? ? ? ? ? <plugin>
? ? ? ? ? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? ? ? ? ? <artifactId>spring-boot-maven-plugin</artifactId>
? ? ? ? ? ? ? ? <version>2.2.6.RELEASE</version>
? ? ? ? ? ? ? ? <configuration>
? ? ? ? ? ? ? ? ? ? <finalName>${project.artifactId}</finalName>
? ? ? ? ? ? ? ? ? ? <mainClass>com.xxl.job.admin.XxlJobAdminApplication</mainClass>
? ? ? ? ? ? ? ? </configuration>
? ? ? ? ? ? ? ? <executions>
? ? ? ? ? ? ? ? ? ? <execution>
? ? ? ? ? ? ? ? ? ? ? ? <goals>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <goal>repackage</goal>
? ? ? ? ? ? ? ? ? ? ? ? </goals>
? ? ? ? ? ? ? ? ? ? </execution>
? ? ? ? ? ? ? ? </executions>
? ? ? ? ? ? </plugin>
? ? ? ? </plugins>
? ? </build>spring-boot-maven-plugin 構(gòu)建找不到
問題描述
本地編譯打包maven項目時,報spring-boot-maven-plugin 構(gòu)建找不到的錯誤。昨天還好好的,本地代碼里的pom文件沒有做任何改動。
pom.xml中有一段下面的配置:(已去掉項目信息)
<plugin> ?? ?<groupId>org.springframework.boot</groupId> ?? ?<artifactId>spring-boot-maven-plugin</artifactId> ?? ?<executions> ?? ??? ?<execution> ?? ??? ??? ?<goals> ?? ??? ??? ??? ?<goal>repackage</goal> ?? ??? ??? ?</goals> ?? ??? ?</execution> ?? ?</executions> ?? ?<configuration> ?? ??? ?<classifier>boot</classifier> ?? ??? ?<mainClass>...</mainClass> ?? ?</configuration> </plugin>
關(guān)鍵錯誤信息如下:
spring-boot-maven-plugin-2.3.1.RELEASE.jar找不到。
分析
- 去本地倉庫,檢查是否有該jar包
- ${user.home}/.m2
- 去遠程倉庫查看,檢查是否有該版本的jar包
通過對比,發(fā)現(xiàn)遠程倉庫里有了最新版本的路徑,但是里面確沒有jar包。
解決
通過分析,可以總結(jié)如下:
spring-boot-maven-plugin沒有設(shè)置version,它會先去遠程倉庫找最新的版本,然后download到本地,然后完成maven操作等。但是遠程倉庫里沒有相應(yīng)的jar包,導致執(zhí)行maven編譯出錯。因為遠程倉庫里已經(jīng)有了最新版本的路徑,它就不會使用已經(jīng)存在的版本。
解決:
給spring-boot-maven-plugin指定具體的version,如下設(shè)置:
<plugin> ?? ?<groupId>org.springframework.boot</groupId> ?? ?<artifactId>spring-boot-maven-plugin</artifactId> ?? ?<version>2.3.0.RELEASE</version> ?? ?<executions> ?? ??? ?<execution> ?? ??? ??? ?<goals> ?? ??? ??? ??? ?<goal>repackage</goal> ?? ??? ??? ?</goals> ?? ??? ?</execution> ?? ?</executions> ?? ?<configuration> ?? ??? ?<classifier>boot</classifier> ?? ??? ?<mainClass>...</mainClass> ?? ?</configuration> </plugin>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA快速部署Spring?Boot?項目到Docker的實現(xiàn)方法
本文主要介紹了IDEA快速部署Spring?Boot?項目到Docker的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
Java多線程執(zhí)行處理業(yè)務(wù)時間太久解決方法代碼示例
這篇文章主要介紹了Java多線程執(zhí)行處理業(yè)務(wù)時間太久解決方法代碼示例的相關(guān)資料,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
mybatisplus報錯:Invalid bound statement(not fou
文章主要介紹了在使用MyBatis-Plus時遇到的`Invalid bound statement (not found)`錯誤的幾種常見原因和解決方法,包括namespace路徑不一致、函數(shù)名或標簽id不一致、構(gòu)建未成功、掃包配置錯誤以及配置文件書寫錯誤2025-02-02
java中List對象列表實現(xiàn)去重或取出及排序的方法
這篇文章主要介紹了關(guān)于java中List對象列表實現(xiàn)去重或取出以及排序的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。2017-08-08
一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用
這篇文章主要介紹了關(guān)于Java中List、Set集合及Map的使用及l(fā)ist,set和map三者的區(qū)別介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08

