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

Spring Boot启动报错:webServerStartStop Bean启动失败求助

问题排查与解决方案

1. 核心原因定位

这个错误本质是Servlet API的版本规范冲突:Spring Boot 3.x及以上版本全面采用Jakarta EE规范(包路径为jakarta.servlet.*),而旧版Apache Jasper依赖的是传统Java EE的javax.servlet.*包,导致类型转换失败。

2. 针对性修复步骤

替换Jasper依赖为Jakarta兼容版本

移除基于javax的旧版tomcat-jasper,改用Spring Boot官方维护的嵌入式Jasper依赖:

<!-- 错误的旧依赖 -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper</artifactId>
</dependency>

<!-- 正确的Jakarta兼容依赖 -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <!-- Spring Boot 3.x会自动管理版本,无需手动指定 -->
</dependency>

若需手动指定版本,确保使用10.x及以上(Tomcat 10+开始支持Jakarta EE)。

排查并排除依赖冲突

执行Maven命令扫描依赖树,找出引入javax.servlet的第三方依赖:

mvn dependency:tree | grep javax.servlet

对存在冲突的依赖添加排除规则:

<dependency>
    <groupId>[冲突依赖的groupId]</groupId>
    <artifactId>[冲突依赖的artifactId]</artifactId>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

规范Spring Boot Web依赖

确保使用官方spring-boot-starter-web,它会自动引入正确的Jakarta Servlet API,避免手动引入jakarta.servlet-api导致版本不一致:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

清理缓存并重建项目

  • 删除本地Maven仓库中冲突的缓存目录:~/.m2/repository/javax、~/.m2/repository/jakarta
  • 执行命令重新构建:mvn clean install -U

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:42:31