1. 程式人生 > >jar中沒有主清單屬性

jar中沒有主清單屬性

存在 以及 mage lib move ins img void bsp

使用eclipse結合maven的創建springboot項目,在eclipse中發布沒問題,但通過mvn install 打成 jar包,在命令行中運行報錯如下

技術分享圖片

查看該jar包的 MANIFEST.MF 文件內容如下,很明顯沒有啟動類(運行java -jar xxx.jar時會根據主清單屬性找到啟動類,從而啟動程序),也沒有相應的主清單屬性。

技術分享圖片

出現此問題一般是由於在pom.xml中少引用了一個插件

<build>
   <plugins>  
       <plugin>
            <groupId>org.springframework.boot</
groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

這個插件其實我已經添加,但是添加時是直接在自動生成的pom.xml代碼裏添加,添加的該<plugin>上上級標簽還存在一個<pluginManagement>

<bulid> 
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) 
--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-clean-plugin</
artifactId> <version>3.0.0</version> </plugin>
     ······ </plugins> </pluginManagement> </bulid>

可以推斷原因為<pluginManagement>標簽的某種機制導致該插件沒有被成功引用,嘗試為該插件添加版本號,重新生成,不成功;將<pluginManagement>標簽去除之後,mvn clean ——>右鍵maven——>Update Project,再重新生成jar包,成功。生成jar包 MANIFEST.MF 文件內容如下:

技術分享圖片

幾個主清單屬性解釋如下:

  • Main-Class:代表了Spring Boot中啟動jar包的程序
  • Start-Class:屬性就代表了Spring Boot程序的入口類,這個類中應該有一個main方法
  • Spring-Boot-Classes:代表了類的路徑,所有編譯後的class文件,以及配置文件,都存儲在該路徑下
  • Spring-Boot-Lib:表示依賴的jar包存儲的位置

jar中沒有主清單屬性