zoukankan      html  css  js  c++  java
  • 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包存储的位置
  • 相关阅读:
    .Net中的加密解密
    C#集合类
    .NetFramework 1: I/O & Stream
    系列4:文件操作以及读写文件
    PetShop之表示层设计 :PetShop之表示层设计 (转)
    const和static readonly 区别
    ASP.NET经典源代码下载地址及数据库配置方法
    一个知名出版商的挫折——解读 Wrox 的历史、现在与未来(转载)
    《C++编程——数据结构与程序设计方法》程序范例:影碟店(源代码)
    ASP.NET 英语词典
  • 原文地址:https://www.cnblogs.com/zjfjava/p/9099302.html
Copyright © 2011-2022 走看看