标签:文件 nbsp info 间接 依赖 java org 是你 为什么
spring boot中jar包方式运行主要依赖于,打包后在jar归档文件根目录的org.springfreamwork.boot.loader.JarLauncher类中执行main方法。
JarLauncher是其中的一个启动引导类,除此以外还有warLauncher,但我们不做过多探讨;
说说jar启动,首先打包后的jar存在3个目录
1 boot-info目录,该目录是当前的自己业务代码的核心目录,里面包含class文件夹和lib文件夹,也就是你的项目类加载目录和jar的依赖包目录。
2 org.springfreamwork.boot.loader文件夹,这个文件夹是jar项目的启动项目;到这里我们意识到了,jar启动并不是直接去启动我们写的项目,而是通过JarLauncher间接启动我们自己的项目。
3 mate-info目录,这里面有该jar包启动所需要的清单文件,MANIFEST.MF 。
MANIFEST中有2个配置项最关键。分别是main-class,start-class。main-class的值就是org.springfreamwork.boot.loader.JarLauncher,而start-class才是我们自己项目中定义的静态main方法。
那么springboot为什么这么设计呢?
之前我们提到了,jar归档文件中有3个文件夹,那么我们的项目实际在boot-info目录中,如果直接通过java -jar的方式去启动则jar本身的内部文件形式并不是标准的jar包;实际是没法使用的,毕竟jar中包含的文件还存在lib文件夹,而lib中仍然有jar包,这显然不是一个我们常规意义上标准的jar包形式。
标签:文件 nbsp info 间接 依赖 java org 是你 为什么
原文地址:https://www.cnblogs.com/zzq-include/p/13216307.html