jar中沒有主清單屬性
阿新 • • 發佈:2018-05-28
存在 以及 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中沒有主清單屬性