每天java -jar,你到底关心它是怎么启动的吗?
拿一个SpringBoot项目举例,当把项目打成jar包时,里面包含三部分
有没有很熟悉呢?是的,在BOOT-INF下有我们的依赖,存放在lib目录下,另外一个就是我们写的代码编译后的class文件和xml,存放在classes目录下
那到底我们项目是怎么启动的呢?
在META-INF下存放了一个MANIFEST.MF文件,这里面指定了我们的启动配置和依赖文件
Start-Class相信大家很熟悉,对的,就是我们项目的启动类,但真正启动jar包的是Main-Class,就是上图中的JarLauncher,那这个类到底在哪里呢?就是我们还没说到的第一个文件夹org下面。它是springboot的类加载器。那我们去看看它到底是怎么启动我们的项目呢。我们进到这个loader下找到JarLauncher.class反编译后发现它是酱紫的