解決java-jar報(bào)錯(cuò):xxx.jar 中沒(méi)有主清單屬性的方法
問(wèn)題復(fù)現(xiàn)
在使用 java -jar xxx.jar 命令運(yùn)行 Java 應(yīng)用程序時(shí),遇到了以下錯(cuò)誤:
xxx.jar 中沒(méi)有主清單屬性

這個(gè)錯(cuò)誤表示 JAR 文件缺少必要的啟動(dòng)信息,Java 虛擬機(jī)無(wú)法找到應(yīng)用程序的入口點(diǎn)。本文將介紹該錯(cuò)誤的原因以及如何通過(guò)修改 pom.xml 文件來(lái)解決。
錯(cuò)誤原因
當(dāng)你使用 java -jar 命令運(yùn)行一個(gè) JAR 文件時(shí),Java 虛擬機(jī)會(huì)在該 JAR 的 META-INF/MANIFEST.MF 文件中查找 Main-Class 屬性,以確定應(yīng)用程序的入口點(diǎn)。如果該屬性缺失,或者指定的主類不存在,就會(huì)導(dǎo)致上述錯(cuò)誤。
解決方法
要解決這個(gè)問(wèn)題,需要在項(xiàng)目的 pom.xml 文件中配置 Maven 插件,以正確生成包含 Main-Class 屬性的可執(zhí)行 JAR 文件。
步驟一:在 pom.xml 中添加或修改 <build> 配置
在你的 pom.xml 文件中,找到或添加 <build> 部分。

然后修補(bǔ)上以下內(nèi)容:
<build>
<plugins>
<!-- Maven Compiler Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>xxx.xxx.xxx.xxxApplication</mainClass>
<skip>false</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置說(shuō)明:
- Maven Compiler Plugin:指定了 Java 源代碼和目標(biāo)版本,以及編碼格式。
- Spring Boot Maven Plugin:
<mainClass>:指定應(yīng)用程序的主類,必須包含main方法。請(qǐng)將xxx.xxx.rxxxdc.xxxApplication替換為你實(shí)際的主類路徑。<skip>false</skip>:確保插件不會(huì)被跳過(guò),默認(rèn)情況下可以省略該配置。<executions>:指定在構(gòu)建過(guò)程中執(zhí)行repackage目標(biāo),重新打包 JAR 文件
步驟二:重新構(gòu)建項(xiàng)目
在項(xiàng)目根目錄下,運(yùn)行以下命令:
mvn clean package
這將清理項(xiàng)目并重新打包,生成的 JAR 文件通常位于 target 目錄下,名稱類似于 xxx.jar。
也可以在 IDEA 的 Maven 菜單里右鍵操作。
先運(yùn)行 clean。

再運(yùn)行 package。

步驟三:運(yùn)行生成的 JAR 文件
使用以下命令運(yùn)行應(yīng)用程序:
java -jar target/xxx.jar
如果配置正確,應(yīng)用程序應(yīng)該能夠正常啟動(dòng),不再出現(xiàn) “沒(méi)有主清單屬性” 的錯(cuò)誤。

注意事項(xiàng)
- 確認(rèn)主類存在且路徑正確:確保你的主類(例如
xxxApplication)存在,并且位于指定的包路徑下(例如xxx.xxx.xxx)。 - 版本一致性:
spring-boot-maven-plugin的版本應(yīng)與 Spring Boot 的版本一致,通常使用${spring-boot.version}引用。 - 避免插件被跳過(guò):確保
<skip>false</skip>,避免插件被跳過(guò)。 - 重新打包:確保
<executions></executions>標(biāo)簽及內(nèi)部的repackage屬性存在。
結(jié)論
通過(guò)在 pom.xml 文件中正確配置 Maven 插件,可以解決 java -jar 命令運(yùn)行時(shí)出現(xiàn)的 “沒(méi)有主清單屬性” 的錯(cuò)誤。關(guān)鍵是確保生成的 JAR 文件包含正確的 Main-Class 屬性,以及所有必要的依賴項(xiàng)。
希望本篇文章能夠幫助你解決問(wèn)題,順利運(yùn)行你的 Java 應(yīng)用程序。
到此這篇關(guān)于解決java-jar報(bào)錯(cuò):xxx.jar 中沒(méi)有主清單屬性的方法的文章就介紹到這了,更多相關(guān)java-jar報(bào)錯(cuò)沒(méi)有主清單屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring整合redis消息監(jiān)聽(tīng)通知使用的實(shí)現(xiàn)示例
在電商系統(tǒng)中,秒殺,搶購(gòu),紅包優(yōu)惠卷等操作,一般都會(huì)設(shè)置時(shí)間限制,本文主要介紹了spring整合redis消息監(jiān)聽(tīng)通知使用,具有一定的參考價(jià)值,感興趣的可以了解一下2021-12-12
Java實(shí)現(xiàn)訂單超時(shí)未支付自動(dòng)取消的8種方法總結(jié)
這篇文章主要為大家介紹了Java實(shí)現(xiàn)訂單超時(shí)未支付自動(dòng)取消功能的8種不同方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08
java 獲取項(xiàng)目文件路徑實(shí)現(xiàn)方法
以下是對(duì)java中獲取項(xiàng)目文件路徑的實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09

