网站Logo GESONG

为什么SpringBoot的jar可以直接运行

gesong
4
2025-08-30

SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行jar包。

SpringBoot应用打包以后,生成一个FatJar,里面包含了应用依赖的jar包和SpringBoot loader相关的类。

java -jar会去找jar包中的manifest文件,在那里面找到真正的启动类Main-Class

FatJar的启动类是org.springframework.boot.loader.launch.JarLauncher,它负责创建一个自定义ClassLoader(LaunchedClassLoader)用来加载boot-lib下面的jar,然后运行应用的启动类的Main方法,对应manifest文件中的Start-Class

如果想查看JarLauncher的源码,需要在pom文件中添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-loader</artifactId>
</dependency>

动物装饰