You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot WAR包部署Tomcat 10.1.7报错:ErrorPageFilter重复注册

问题根因分析

Tomcat 10.1.x基于**Jakarta EE 9+**规范,使用jakarta.servlet包路径;而Spring Boot 2.x版本依赖的是旧版javax.servlet规范,两者API包名不兼容。ErrorPageFilter是Spring Boot内置的过滤器,它试图注册到Tomcat 10的ServletContext时,因API路径不匹配导致注册失败——这才是问题的核心,不是单纯关闭日志能解决的。

解决方案

方案1:彻底停用ErrorPageFilter(快速临时修复)

你之前配置logging.level.org.springframework.boot.context.web.ErrorPageFilter=off只是关闭了该类的日志输出,并没有真正停用过滤器。正确的代码配置方式如下:

创建一个Spring配置类,放在项目主配置包下(和启动类同包或子包,确保能被扫描到):

import org.springframework.boot.context.web.ErrorPageFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatDeploymentConfig {
    @Bean
    public FilterRegistrationBean<ErrorPageFilter> disableErrorPageFilter() {
        FilterRegistrationBean<ErrorPageFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new ErrorPageFilter());
        registration.setEnabled(false);
        return registration;
    }
}

方案2:升级到Spring Boot 3.x(长期适配方案)

Spring Boot 3.x完全基于Jakarta EE 9+规范,和Tomcat 10.x的API完全兼容,能从根源上解决这类包路径冲突问题。升级要点:

  • 修改pom.xml中Spring Boot父依赖版本为3.x(例如3.2.0)
  • 替换所有javax.servlet相关自定义依赖为jakarta.servlet(Spring Boot 3会自动处理大部分框架依赖)
  • 调整代码中的导入路径,比如将javax.servlet.http.HttpServletRequest替换为jakarta.servlet.http.HttpServletRequest

方案3:降级Tomcat版本(过渡方案)

如果暂时无法升级Spring Boot,可以将Docker环境中的Tomcat版本降级到9.x(基于javax.servlet规范),这样和Spring Boot 2.x兼容性更好,无需修改代码。

额外排查项
  • 检查WAR包构建配置:确保pom.xml中已设置<packaging>war</packaging>,并排除Spring Boot内置Tomcat依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
  • 确认Docker中Tomcat的部署状态:检查webapps目录下的WAR是否正常解压,查看Tomcat启动日志是否有其他前置错误。

内容的提问来源于stack exchange,提问作者Richter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:25:03