jar中沒有主清單屬性


使用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包存儲的位置

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM