【特别详细版】SpringBoot打war,jar包,并且成功运行

本文详细介绍如何使用SpringBoot分别打包成war和jar文件,并部署到Tomcat服务器上运行。包括配置pom.xml,调整Application类,解决常见问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:SpringBoot有的第一的话,打包非常的不熟练,所以就是我来搞下,让大家尽量少走弯路。
测试环境: IDEA,Maven,SpringBoot,Jsp(说明:SpringBoot内嵌Tomcat不支持对Jsp的扩展,所以需要借用外部的Tomcat来跑项目),tomcat9,在这里用的是Windows的tomcaat演示的(其实和Linux中tomcat效果是一样的)


1.SpringBoot打war包

a).首先你创建的项目是一个Web项目,然后打包方式是war(在这里不一步一步说明),首先pom中需要添加对外部tomcat的支持
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
b).然后就是确保本地项目能够成功的访问
c).更改程序入口类 Application.java 使其继承SpringBootServletInitializer,并重写configure方法(备注:Application是可以更换的)

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return  builder.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}
d).重新打包为war包,然后放在tomcat运行(备注:建议使用tomcat9来运行,使用tomcat8的时候老会出现java没有主清单属性)

在这里插入图片描述

e).然后访问就可以了

在这里插入图片描述


2.SpringBoot打jar包

a).如图,不管用那种方式先打ajr包

在这里插入图片描述

b).然后放在tomcat中,并成功重新启动tomcat,然后CMD进入当前目录执行 java -jar 项目名称

在这里插入图片描述

在启动jar时候出现了一个问题:如图

在这里插入图片描述

解决方案:再pom中添加插件
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
重新打包 ,重新运行,就能成功访问

在这里插入图片描述

### Spring Boot 中 JARWAR 的区别及适用场景 #### 1. 基础概念对比 JAR 文件是一种标准的 Java 归档文件格式,通常用于封装独立运行的应用程序。而 WAR(Web Application Archive)文件则专门设计用来部署 Web 应用到传统的 Servlet 容器中,比如 Tomcat 或 Jetty[^1]。 #### 2. 打方式的不同 当将 Spring Boot 项目打JAR 文件时,默认情况下会嵌入一个轻量级的服务器(如内置的 Tomcat),这使得该应用可以作为独立进程直接运行。相比之下,WAR 文件并不自带任何服务器组件,它依赖外部的 Servlet 容器来加载并执行其中的内容[^2]。 #### 3. 启动机制差异 对于基于 JAR 的 Spring Boot 应用而言,在命令行下只需简单地输入 `java -jar your-application.jar` 即可完成启动操作。然而如果采用的是 WAR 格式的分发,则需要先将其放置于目标 Servlet 容器内的指定目录之后再由后者负责初始化整个流程[^4]。 #### 4. 结构上的区别 从内部结构上看,WAR 文件除了含 class 文件外还会额外增加 WEB-INF/lib 目录存储第三方库以及 META-INF/MANIFEST.MF 记录元数据信息等内容;与此同时,所有的前端资源也会被保留下来以便能够正常访问页面等功能模块。相反地,JAR 类型仅保存必要的字节码及相关配置项即可满足需求。 #### 5. 性能考量与维护成本分析 由于 JAR 方案无需考虑兼容性问题并且更容易实现自动化运维管理(例如借助 Docker 进行容器化),所以在现代微服务架构体系当中更受青睐。不过需要注意的一点是,尽管如此仍然存在某些特殊场合可能更适合选用 WAR 模式——特别是那些已经长期稳定运作的传统 IT 系统环境中[^3]。 综上所述,Spring Boot 提供了灵活多样的发布选项让用户可以根据实际业务特点做出明智决策: - 如果追求高效便捷且倾向于利用最新技术趋势构建现代化解决方案的话,那么毫无疑问应该优先选择 JAR; - 而针对一些受限于历史遗留因素或者特定法规约束无法轻易改变现有基础设施布局的情况来说,WAR 则不失为一种折衷办法. ```bash # 启动 JAR 的方式 java -jar my-spring-boot-app.jar # 将 WAR 放到 Tomcat webapps 下自动解压部署 cp my-spring-boot-app.war /path/to/tomcat/webapps/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值