当前位置: 代码迷 >> 综合 >> Spring Boot 打包分为 war 格式,放到Tomcat下报错的解决方案
  详细解决方案

Spring Boot 打包分为 war 格式,放到Tomcat下报错的解决方案

热度:31   发布时间:2023-09-19 14:39:49.0

Spring Boot 打包分为 war 格式需要在pom.xml文件中设置

<packaging>war</packaging>

这个时候运行 mvn package 就会生成 war 包,然后放到 Tomcat 当中就能启动,但是我们单纯这样配置在 Tomcat 是不能成功运行的,会报错,需要通过编码指定 Tomcat 容器启动,修改启动类 DemoApplication 类

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplicationpublic class DemoApplication extends SpringBootServletInitializer {  public static void main(String[] args) {    SpringApplication.run(DemoApplication.class, args);  }  @Override  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  return application.sources(DemoApplication.class);   }}

这时再打包放到 Tomcat,启动就不会报错了。

在上述代码中,DemoApplication 类继承了 SpringBootServletInitializer,并重写 configure 方法,目的是告诉外部 Tomcat,启动时执行该方法,然后在该方法体内指定应用程序入口为 DemoApplication 类,如果通过外部 Tomcat 启动 Spring Boot 应用,则其配置文件设置的端口和 contextPath 是无效的。这时,应用程序的启动端口即是 Tomcat 的启动端口,contextPath 和 war 包的文件名相同。