解決java -jar XXX.jar沒有主清單屬性以及找不到或無法加載主類的問題
一、問題陳述
環(huán)境:
- Idea 2021
- jdk1.8
我的是spring boot項(xiàng)目,在pom文件是去掉了parent的標(biāo)簽,使用dependencyManagement標(biāo)簽對(duì)spring boot 依賴進(jìn)行管理。
idea上打包運(yùn)行java -jar gulimall-member-0.0.1-SNAPSHOT.jar時(shí),報(bào)沒有主清單屬性的錯(cuò)誤,完整的報(bào)錯(cuò)如下:
MrzhuangdeMacBook-Pro:target mrzhuang$ java -jar gulimall-member-0.0.1-SNAPSHOT.jar
gulimall-member-0.0.1-SNAPSHOT.jar中沒有主清單屬性
二、解決方法
可以參考:Maven指令打包SpringBoot項(xiàng)目提示沒有主清單文件
1、方法一(問題沒有真正解決)
查閱了網(wǎng)上的解決沒有主清單屬性辦法
提醒:這種方法,對(duì)于我的問題沒有真正的解決,可能與項(xiàng)目的結(jié)構(gòu)有關(guān)。
1.1 點(diǎn)擊File -> Project Structure
1.1.1 依次點(diǎn)擊artifacts -> “+” -> JAR -> From .....

1.1.2 選擇模塊和主類,注意下面的/main/java需要去掉,點(diǎn)擊OK,然后點(diǎn)擊apply。

1.2 點(diǎn)擊菜單欄Build -> Build Artifacts

1.2.1 選擇想要生成的jar包,點(diǎn)擊Build

最后在out文件夾中,成功生成了想要的jar包。

1.2.2 運(yùn)行jar包:
雖然解決了沒有主清單屬性,但是我的又報(bào)另一個(gè)錯(cuò)誤找不到或無法加載主類 。
MrzhuangdeMacBook-Pro:gulimall_member_jar mrzhuang$ java -jar gulimall-member.jar 錯(cuò)誤: 找不到或無法加載主類。com.zhuang.gulimall.member.GulimallMemberApplication
1.3 解決找不到或無法加載主類的方法
提示:此方法因項(xiàng)目的結(jié)構(gòu)而異。我的沒有解決!
1.3.1 在解決錯(cuò)誤:找不到或無法加載主類,也查閱了資料,更多的是在pom文件的mven插件中,增加如下的配置
<configuration>
<mainClass>主類的相對(duì)路徑</mainClass>
</configuration> 的配置。
整體的配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.zhuang.gulimall.member.GulimallMemberApplication</mainClass>
</configuration>
</plugin>1.3.2 然后重新Build Artifacts,再次運(yùn)行out路徑下重新生成的jar包。
最終還是報(bào)了找不到或無法加載主類 com.zhuang.gulimall.member.GulimallMemberApplication的錯(cuò)誤。
2、方法二(最終解決了問題)
在pom文件的maven插件中增加如下的配置:
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>完整的:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>說明:spring-boot-maven插件的repackage(goal)有如下兩個(gè)作用:
1、在原始Maven打包形成的jar包基礎(chǔ)上,進(jìn)行重新打包,新形成的jar包不但包含應(yīng)用類文件和配置文件,而且還會(huì)包含應(yīng)用所依賴的jar包以及Springboot啟動(dòng)相關(guān)類(loader等),以此來滿足Springboot獨(dú)立應(yīng)用的特性;
2、將原始Maven打包的jar重命名為XXX.jar.original作為原始文件;
對(duì)項(xiàng)目執(zhí)行 maven clean package,可以看出在target文件中,生成了.jar包以及.original后綴的原始文件。

運(yùn)行生成的jar包:

可以看出成功運(yùn)行了!??!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java之Map 按值排序 (Map sort by value)
下面小編就為大家?guī)硪黄獪\談Java之Map 按值排序 (Map sort by value)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
SpringBoot+Echarts實(shí)現(xiàn)請(qǐng)求后臺(tái)數(shù)據(jù)顯示餅狀圖
這篇文章主要介紹了SpringBoot+Echarts實(shí)現(xiàn)請(qǐng)求后臺(tái)數(shù)據(jù)顯示餅狀圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
Java中HTTP請(qǐng)求的常見錯(cuò)誤與排查解決方法
在Java編程語言中,發(fā)送HTTP和HTTPS請(qǐng)求是常見的任務(wù),特別是在開發(fā)Web服務(wù)客戶端或進(jìn)行API交互時(shí),這篇文章主要介紹了Java中HTTP請(qǐng)求的常見錯(cuò)誤與排查解決的相關(guān)資料,需要的朋友可以參考下2025-08-08
RocketMQ中多消息不同狀態(tài)回查的設(shè)計(jì)與優(yōu)化過程
文章介紹了事務(wù)狀態(tài)回查的觸發(fā)條件、核心挑戰(zhàn)、方案設(shè)計(jì)、實(shí)現(xiàn)、優(yōu)化策略及監(jiān)控告警,通過多狀態(tài)回查,確保系統(tǒng)在業(yè)務(wù)異常時(shí)仍能保持最終一致性,并提升性能和穩(wěn)定性2026-01-01
JAVA實(shí)現(xiàn)的簡(jiǎn)單萬年歷代碼
這篇文章主要介紹了JAVA實(shí)現(xiàn)的簡(jiǎn)單萬年歷代碼,涉及Java日期操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找)
本篇文章主要介紹了詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09

