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

SpringBoot替换Tomcat为Jetty启动缺失ServletWebServerFactory报错

SpringBoot替换Tomcat为Jetty启动失败排查方案

报错核心原因是应用运行时Classpath中找不到Jetty对应的ServletWebServerFactory实现,按以下顺序排查即可:

  • 校验依赖加载正确性
    配置写对但依赖没实际加载是最高发的原因:
    1. 执行mvn clean install -U强制拉取更新依赖,避免本地Maven缓存异常
    2. 执行mvn dependency:tree查看实际依赖树,确认两个结果:
      • 所有spring-boot-starter-tomcat依赖已被完全排除,没有其他starter传递引入Tomcat包
      • spring-boot-starter-jetty及其核心传递依赖(jetty-server、spring-boot-jetty-core等)已存在,且scope为默认的compile(如果设置为test/provided会导致运行时不加载)
    3. 多模块项目需确认:Tomcat排除规则、Jetty依赖都配置在启动类所在的模块中,而非其他未被依赖的子模块
  • 校验版本兼容性
    不要手动指定Jetty依赖的版本号,SpringBoot官方的starter-parent已经管理了和当前版本完全适配的Jetty版本,手动指定不兼容的版本会导致自动配置类失效。如果之前手动加过<version>标签,直接删除即可,用SpringBoot默认管理的版本重试。
  • 校验自动配置是否被意外关闭
    1. 检查启动类的@SpringBootApplication、@EnableAutoConfiguration注解,确认没有exclude掉Jetty相关的自动配置类
    2. 检查配置文件(application.yml/application.properties),如果存在spring.main.web-application-type=none配置,直接删除,或者改为spring.main.web-application-type=servlet
  • 兜底手动注册容器工厂
    以上配置都校验无误仍报错的话,可以在自定义配置类中手动注册Jetty容器Bean:
    import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
    import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class WebServerConfig {
        @Bean
        public ServletWebServerFactory jettyWebServerFactory() {
            return new JettyServletWebServerFactory();
        }
    }
    

90%以上的同类问题都是依赖未正确加载导致的,优先排查依赖树即可快速定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:33:07