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

Tomcat10部署Apache CXF SOAP服务报NoClassDefFoundError错误

错误根因

Apache Tomcat 10.0及以上版本完成了Java EE到Jakarta EE的命名空间迁移,所有原javax.*前缀的Servlet、Java EE规范类全部改为jakarta.*前缀。你当前项目使用的CXF 3.4.x、Spring 5.x、javax.servlet-api依赖均基于旧javax命名空间开发,和Tomcat 10的运行环境不兼容,因此会抛出类找不到的错误。

解决方案

提供两种适配方案,可根据实际需求选择:

方案1:降级应用服务器到Tomcat 9.x(改动最小,适合快速修复)

Tomcat 9.x版本仍维持javax.*命名空间规范,和你当前项目的所有依赖完全兼容,直接将本地Tomcat 10替换为Tomcat 9最新稳定版即可正常部署。

方案2:升级项目依赖适配Tomcat 10的Jakarta规范(适合长期适配新环境)

需要全量替换pom.xml中的相关依赖,同时调整代码和配置:

  • 替换Servlet API依赖:将原javax.servlet-api替换为Jakarta版本:
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>
  • 升级CXF版本到4.0.0及以上,该版本起支持Jakarta命名空间
  • 升级Spring版本到6.0.0及以上,该版本起支持Jakarta命名空间
  • 调整所有代码中的导入语句,将import javax.servlet.*、import javax.jws.*等javax前缀的导入全改为对应jakarta前缀
  • 调整web.xml、Spring配置文件中所有Servlet、Listener的类路径,将javax开头的类全改为jakarta开头
  • 替换旧的tomcat7-maven-plugin为支持Tomcat 10的插件,或直接使用本地Tomcat 10进行部署

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:57:02