springboot项目打包的可执行jar运行报错

问题展现

现在使用springboot开发spring项目是真的方便快捷,程序开发完成之后,直接打包成一个可执行jar文件,就可以在java环境中运行。那对于新手小伙伴来说,可能会碰到打包好的可执行jar文件无法通过java -jar命令进行启动,报错提示该可执行jar文件中没有主清单属性,如下所示。
在这里插入图片描述
仔细观察该可执行jar文件,发现其只有KB级大小,显然是有问题的。
在这里插入图片描述

问题解决

在springboot项目的pom.xml文件中,添加以下节点内容,并重新打包。

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

在这里插入图片描述
可以看到,加上这段内容之后,重新打包后的jar文件大小就是MB级,再次使用java -jar命令启动也再没有问题。

原理说明

在oracle官网的java文档中有一段话作者进行了部分截取。

The java command starts a Java application. 
If the -jar option is specified, its argument is the name of the JAR file containing class and resource files for the application. 
The startup class must be indicated by the Main-Class manifest header in its source code.

翻译过来就是说,java命令是用来启动一个java应用的,如果java命令后接了-jar选项,那么紧跟的参数就是可执行jar文件的名字,这个可执行jar文件包含了编译好的字节码文件以及资源文件。启动类必须通过源码中的manifest头的Main-Class属性指定。
简单点说,java -jar 命令执行的时候,会去运行可执行jar文件的META-INF/MANIFEST.MF文件中的Main-Class属性指定的类,如果没有找到,就会报没有主清单的错误。

加了spring-boot-maven-plugin插件生成的MANIFEST.MF文件

在这里插入图片描述

没加spring-boot-maven-plugin插件生成的MANIFEST.MF文件

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值