解决jar包中没有主清单目录的问题

解决jar包中没有主清单目录的问题


问题描述

很简单可能很多人都遇到过,maven项目打成jar包后执行报错:jar包中没有主清单属性

报错如下:

D:\Dev\DevTools\jdk8\bin\java.exe -Dfile.encoding=GBK -jar D:\DevCodes\Gitlab\TempDemo\target\TempDemo-0.0.1-SNAPSHOT.jar
D:\DevCodes\Gitlab\TempDemo\target\TempDemo-0.0.1-SNAPSHOT.jar中没有主清单属性

截图如下:

在这里插入图片描述



环境描述

由于现在SpringBoot官方提供的Spring Initializr不提供2.x.x版本的SpringBoot,所以我将它替换成了阿里的构造器(替换方法见下图,URL:https://start.aliyun.com )。


这一步不是步骤,不需要模仿。

截图




方法一 | 阿里巴巴构造器的通用解决方案

无论是否使用阿里巴巴构造器创建的项目,都需要确认pom.xml文件中是包含下面代码,如果有的话请注释掉<skip>true</skip>这一行代码,随后打包测试。


若是采用我在上面介绍的阿里巴巴构造器的项目创建方式,则一定会遇到这个问题,且这种方式一定可以解决。

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <version>${spring-boot.version}</version>
   <configuration>
       <mainClass>com.jim.tempdemo.TempDemoApplication</mainClass>
       <!-- 需要注释掉的代码 -->
       <!-- <skip>true</skip> -->
   </configuration>
   <executions>
       <execution>
           <id>repackage</id>
           <goals>
               <goal>repackage</goal>
           </goals>
       </execution>
   </executions>
</plugin>

注释掉之后重新打包即可。

注意:请勿修改build标签中的其它代码,可能会导致打包后依然没有主清单属性,如果修改请还原。

注意:使用阿里构造器创建的项目请勿删除dependencyManagement,这会一些依赖无法下载,需要手动指定版本或指定项目的父项目(parent)。




方式二 | 指定MANIFEST.MF路径

此方案适用于官方构造器创建的项目,若是采用阿里巴巴构造器创建的项目使用此方案解决的话,需要对POM进行改造,在文章末尾有介绍。

  1. 点击Project Structure
    在这里插入图片描述

  2. 按照下图依次创建一个Artifacts

在这里插入图片描述

在这里插入图片描述

请注意:上图第二个红框框中的路径一开始不是src下,需要修改一下。

做完上述步骤后,src文件夹下会出现一个META-INF文件夹,里面的文件中包含着启动类等信息。

在这里插入图片描述

到这里就可以再次尝试打包了(官方构造器创建的项目到这里应该已经解决了),如果还没有解决问题,请继续往下看。

  1. 如果还没有解决问题的话,请在你的pom.xml文件中添加maven插件:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

添加后刷新Maven后重新打包测试。

正如上文所说,方式2并不适用于阿里巴巴构造器,如果是使用阿里巴巴构造器创建的项目想要使用方式2来解决的话,需要删除掉dependencyManagement标签,随后刷新Maven会提示几个依赖没有版本信息,这时候给这几个缺失版本的依赖都添加上依赖信息后重新打包即可,或者不用单独指定依赖版本,直接指定整个项目的父项目也可以。

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值