springboot打包的jar包为什么能直接运行

首先要知道的是我们经常使用的命令【java -jar *.jar】是怎么运行的?

当执行这个命令的时候,它会解析jar包下的META-INF文件夹下的MANIFEST.MF文件,下面一步步解析查看执行流程。

1、我们先看一个普通jar包的内部,以及MANIFEST.MF文件

springboot打包的jar包为什么能直接运行_第1张图片

springboot打包的jar包为什么能直接运行_第2张图片

2、当我们对这个普通jar包进行执行的时候就会报出如下错误

3、既然没有主清单,那么我们就在文件里面添加一个主清单。

springboot打包的jar包为什么能直接运行_第3张图片

4、执行添加主清单的jar包

5、既然没有主类我们就添加一个主类(需要转成class文件),并放到jar包里面

springboot打包的jar包为什么能直接运行_第4张图片

springboot打包的jar包为什么能直接运行_第5张图片

6、继续执行jar包

至此,一个普通的jar包也能够成功执行。既然知道了普通jar包经过改造也能执行,由此我们可以想象为什么springboot打的包可以直接运行,因为springboot打的包MANIFEST.MF文件里面已经写好的主清单要执行的代码。

下面展示一张MANIFEST.MF文件的数据配置图片:

springboot打包的jar包为什么能直接运行_第6张图片

你可能感兴趣的:(#,springboot,java,java,spring,boot)