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

Spring Boot内嵌Tomcat环境出现ClientAbortException NoClassDefFoundError异常

异常原因分析
  • 依赖冲突问题:你的pom中同时引入了Spring Boot默认带的嵌入式Tomcat依赖,以及compile范围的Jetty 11服务器依赖,两类Servlet容器的类存在加载优先级冲突。当偶发类加载器优先加载Jetty相关类、或者Tomcat类路径被覆盖时,就会找不到org/apache/catalina/connector/ClientAbortException类定义。
  • Spring Boot版本不兼容:父pom继承的Spring Boot版本为2.2.13.RELEASE,但是单独指定spring-boot-starter-web版本为2.3.2.RELEASE,父子版本不匹配导致Tomcat依赖版本管理混乱,不同版本的Tomcat类定义存在差异,也会触发类找不到的问题。
  • 场景触发逻辑:调用外部服务失败时通常伴随请求超时,客户端会提前断开连接,Tomcat此时需要抛出ClientAbortException处理断开逻辑,刚好触发了前面的类加载冲突问题,所以异常只在该场景下偶发。
修复方案
  • 移除不必要的Jetty依赖:你的代码中明确使用TomcatServletWebServerFactory自定义Tomcat容器,不需要引入Jetty,直接删除pom中jetty-server和jetty-io两个依赖即可。
  • 统一Spring Boot版本:要么将父pom的Spring Boot版本升级到和spring-boot-starter-web匹配的2.3.x版本,要么删除spring-boot-starter-web的version标签,继承父pom的版本管理规则,避免版本不一致导致的依赖冲突。
  • 若确实需要保留Jetty用于测试,将Jetty两个依赖的scope改为test,避免生产环境加载Jetty相关类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:08