springboot项目在Tomcat部署访问404问题

本文介绍了解决SpringBoot项目与外置Tomcat部署冲突的两种方法:一是选择WAR包打包方式并配置依赖;二是通过继承SpringBootServletInitializer类并重写configure方法,避免内置Tomcat加载。

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

由于springboot有内置的Tomcat 所以在部署项目到外置Tomcat时 会发生冲突
解决方案有两种(一般出现这个问题的时候是项目已经生成 尝试使用方法一 直接在pom注入依赖 发现行不通 暂时没有搞明白为什么 最终选择方法二来解决 )

第一种 在创建项目时选择打包方式为war包 在pom会生成依赖 打war包时忽略内置的Tomcat

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>

第二种 处理springboot的启动 (可以直接在启动类上修改 也可以重新写个类) 实现SpringBootServletInitializer重写configure 在springboot启动时 忽略内置Tomcat的加载

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * @author chengxn
 * @date 2019/3/15
 * 解决springboot打成war包,部署tomcat后访问404问题
 */
public class BackendInTomcatApplication extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}

}

处理完后 打包部署访问就没有问题了

### 解决Tomcat部署Spring Boot应用时的404错误 当遇到在Tomcat部署Spring Boot应用程序并收到404错误的情况,可以采取以下几个措施来解决问题。 #### 修改`pom.xml` 为了确保Spring Boot不会使用其默认内嵌的Tomcat服务器而是利用外部配置好的Tomcat实例,在项目的`pom.xml`文件中应调整依赖项设置。具体来说,对于`spring-boot-starter-tomcat`这个组件应该将其作用域设为`provided`,表明该库仅用于编译阶段而不在运行期提供[^3]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` 这样做能够防止打包过程中重复引入不必要的资源,并允许Web容器管理自己的Servlet API实现。 #### 更新启动类 为了让Spring Boot应用程序能够在传统的Java EE环境中作为WAR包工作,还需要对主程序入口做出相应改动——即让启动类继承自`SpringBootServletInitializer`并且覆盖其中的方法以便正确初始化上下文环境[^4]: ```java @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } } ``` 注意这里移除了原有的静态main函数定义,因为当以WAR形式部署至外置Tomcat时并不需要它;不过如果希望保留直接通过命令行执行的能力,则可以选择保持此方法不变。 #### 检查Tomcat与JDK兼容性 另一个可能导致404响应的原因在于所使用的Apache Tomcat版本可能无法很好地支持当前开发工具链中的某些特性或标准。例如,较老版本如6.x系列可能会存在一些局限性,尤其是在搭配现代编程语言特性和框架的情况下。因此建议确认目标Tomcat版本是否匹配正在使用的JDK版本以及Spring Boot的要求[^2]。通常情况下推荐选用最新稳定版的组合以获得更好的性能和支持度。 #### 验证URL路径映射 最后还需仔细核对自己试图访问的具体地址是否确实存在于项目内部路由表里。有时开发者会误以为某个端点已经注册成功但实际上并未如此处理过,从而引发找不到请求资源的现象。可以通过查阅控制器层代码或者借助IDE内置调试功能来进行排查验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值