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

简介: SpringBoot的 jar 可以直接运行的原因

Spring Boot 的 JAR 文件可以直接运行,这是因为 Spring Boot 提供了一个名为 "Spring Boot Executable Jar" 或 "Fat JAR" 的特性。这种 JAR 文件包含了应用程序所需的所有依赖,以及一个特殊的启动器,使得它能够像一个独立的可执行程序一样运行。

以下是 Spring Boot JAR 可以直接运行的几个关键原因:

嵌入式 Web 服务器:Spring Boot 默认集成了嵌入式的 Web 服务器,如 Tomcat、Jetty 或 Undertow。这些服务器被打包在 JAR 文件中,因此应用程序不需要外部 Web 服务器即可运行。
打包所有依赖:Spring Boot 使用 spring-boot-maven-plugin 或 spring-boot-gradle-plugin 插件来构建可执行的 JAR 文件。这些插件会将应用程序的所有依赖(包括 Spring Boot 的依赖和应用程序自身的依赖)一起打包到 JAR 文件的 BOOT-INF/lib 目录下。
启动器(Launcher):Spring Boot 的 JAR 文件包含一个特殊的启动器,通常位于 JAR 文件的根目录下,名为 META-INF/MANIFEST.MF。这个清单文件指定了主类(包含 main 方法的类),并且包含一个启动器,如 org.springframework.boot.loader.JarLauncher,它负责启动应用程序。
自定义类加载器:Spring Boot 的启动器使用了一个自定义的类加载器,它能够从 JAR 文件内部的 BOOT-INF/lib 目录加载应用程序的类和依赖。这使得应用程序的类和依赖可以一起打包在同一个 JAR 文件中,并且可以被正确地加载和执行。
命令行运行:由于 Spring Boot 的 JAR 文件是可执行的,你可以通过简单的命令行指令来运行它,例如:

java -jar myapplication.jar
这个命令会触发启动器,启动器会加载应用程序的主类并执行 main 方法,从而启动整个应用程序。
总结来说,Spring Boot 的 JAR 文件之所以可以直接运行,是因为它包含了所有必要的依赖和一个特殊的启动器,这个启动器能够正确地加载应用程序的类和依赖,并启动应用程序。这种打包方式简化了部署过程,使得应用程序可以轻松地在不同的环境中运行。

目录
相关文章
|
1月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
49 1
|
24天前
|
安全 Java 应用服务中间件
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
36 0
|
2月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
640 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
2月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
223 2
|
2月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
1141 1
|
4月前
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
4月前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
4月前
|
Java Maven C++
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
|
4月前
|
Java Spring
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
|
4月前
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包

热门文章

最新文章

下一篇
DataWorks