運(yùn)行Jar包出現(xiàn)提示xxx中沒(méi)有主清單屬性報(bào)錯(cuò)問(wèn)題解決方法
推薦閱讀:
jar包運(yùn)行時(shí)提示jar中沒(méi)有主清單屬性的解決
運(yùn)行Jar包出現(xiàn):xxx中沒(méi)有主清單屬性報(bào)錯(cuò)
1、項(xiàng)目打好jar包時(shí),使用命令運(yùn)行jar包:
java -jar xxx.jar
出現(xiàn)報(bào)錯(cuò):xxx中沒(méi)有主清單屬性
解決辦法:親測(cè)有用
在pom.xml配置中,加上以下配置:
<build> <!--打包成jar包時(shí)的名字--> <finalName>xxxTest</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
再打包運(yùn)行時(shí),成功輸出日志
解決運(yùn)行jar包時(shí)報(bào)錯(cuò)“沒(méi)有主清單屬性“以及丟失依賴jar包的問(wèn)題
問(wèn)題描述
原因描述
Maven 打包時(shí)默認(rèn)情況下不會(huì)將第三方依賴打包進(jìn)去是因?yàn)?Maven 遵循了一種依賴管理的原則,即將項(xiàng)目與其依賴庫(kù)(第三方庫(kù))分開(kāi)管理。這樣做有以下幾個(gè)優(yōu)點(diǎn):
1.減小打包體積:如果所有的第三方依賴都包含在打包文件中,將會(huì)導(dǎo)致最終的構(gòu)建產(chǎn)物巨大,增加部署和傳輸?shù)某杀?。而只打包?xiàng)目本身的代碼和資源,可以顯著減小生成的可執(zhí)行文件的大小。
2.依賴共享與復(fù)用:Maven 使用中央倉(cāng)庫(kù)來(lái)存儲(chǔ)和管理各種開(kāi)源庫(kù),這些庫(kù)可以被多個(gè)項(xiàng)目共享和復(fù)用。通過(guò)在項(xiàng)目的 pom.xml 文件中聲明依賴,Maven 可以自動(dòng)下載所需的庫(kù)文件,確保項(xiàng)目構(gòu)建所依賴的庫(kù)的版本一致性,并在構(gòu)建過(guò)程中自動(dòng)解決依賴關(guān)系。
3.簡(jiǎn)化維護(hù)和升級(jí):由于第三方依賴獨(dú)立于項(xiàng)目進(jìn)行管理,并且通過(guò) Maven 的依賴管理機(jī)制進(jìn)行引入和更新,當(dāng)需要升級(jí)某個(gè)第三方庫(kù)的版本時(shí),只需修改項(xiàng)目的 pom.xml 文件中的相應(yīng)依賴版本號(hào),而無(wú)需手動(dòng)替換庫(kù)文件或修改代碼。
盡管 Maven 默認(rèn)不會(huì)將第三方依賴打包進(jìn)可執(zhí)行文件中,但你仍然可以通過(guò) Maven 的插件來(lái)實(shí)現(xiàn)將依賴打包到可執(zhí)行文件中的需求。例如,通過(guò) Maven Shade 插件或者SpringBoot的Maven插件可以創(chuàng)建一個(gè)可執(zhí)行 JAR 文件,并將所有依賴庫(kù)打包為一個(gè)可執(zhí)行的大 JAR 文件
在一些情況下,即使沒(méi)有在 Maven 插件配置中顯式指定主類,在打包時(shí)也可以成功生成包含主清單屬性的可執(zhí)行 JAR 文件。這是因?yàn)樵谀承┣闆r下,Maven 可以自動(dòng)檢測(cè)到項(xiàng)目的入口點(diǎn),并將其作為默認(rèn)的主類。
然而,這種自動(dòng)檢測(cè)主類的行為并不是所有情況下都適用。具體是否需要顯式指定主類取決于你的項(xiàng)目結(jié)構(gòu)和依賴關(guān)系。如果 Maven 無(wú)法自動(dòng)檢測(cè)到主類或者檢測(cè)到的主類不是你希望的,最常見(jiàn)的就是你的引導(dǎo)類名不規(guī)范導(dǎo)致如"Starter"(應(yīng)該是StarterApplication),就會(huì)出現(xiàn)"沒(méi)有主清單屬性"的錯(cuò)誤。
因此,為了保證項(xiàng)目的可靠性和一致性,建議在 Maven 插件配置中顯式指定主類。這樣可以避免潛在的問(wèn)題,并確保打包后的可執(zhí)行 JAR 文件始終具有正確的主清單屬性。
解決方案:
1:規(guī)范書寫
2 明確聲明主類名以及打包方式
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <mainClass>引導(dǎo)類全類名</mainClass> </configuration> </plugin> </plugins> </build>
到此這篇關(guān)于運(yùn)行Jar包出現(xiàn):xxx中沒(méi)有主清單屬性報(bào)錯(cuò)的文章就介紹到這了,更多相關(guān)xxx中沒(méi)有主清單屬性報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA無(wú)法使用終端terminal問(wèn)題的解決方案
這篇文章主要介紹了IDEA無(wú)法使用終端terminal問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09SpringBoot Java后端實(shí)現(xiàn)okhttp3超時(shí)設(shè)置的方法實(shí)例
Okhttp的使用沒(méi)有httpClient廣泛,網(wǎng)上關(guān)于Okhttp設(shè)置代理的方法很少,下面這篇文章主要給大家介紹了關(guān)于SpringBoot Java后端實(shí)現(xiàn)okhttp3超時(shí)設(shè)置的相關(guān)資料,需要的朋友可以參考下2021-10-10Linux中使用shell腳本管理Java應(yīng)用程序
在日常開(kāi)發(fā)和運(yùn)維工作中,管理基于Java的應(yīng)用程序是一項(xiàng)基礎(chǔ)且頻繁的任務(wù),本文將通過(guò)一個(gè)示例腳本,展示如何利用Shell腳本簡(jiǎn)化這一流程,實(shí)現(xiàn)Java應(yīng)用的一鍵式啟動(dòng)、停止與重啟操作,本腳本不僅提升了工作效率,還確保了操作的標(biāo)準(zhǔn)化與可靠性2024-06-06淺談MyBatis 如何執(zhí)行一條 SQL語(yǔ)句
Mybatis 是 Java 開(kāi)發(fā)中比較常用的 ORM 框架。在日常工作中,我們都是直接通過(guò) Spring Boot 自動(dòng)配置,并直接使用,但是卻不知道 Mybatis 是如何執(zhí)行一條 SQL 語(yǔ)句的,下面就一起講解一下2021-05-05Java算法實(shí)現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解
今天小編就為大家分享一篇關(guān)于Java算法實(shí)現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01