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

CXF 3.4.4搭配Tomcat 10报类转换异常是否需降级为Tomcat 9

问题原因

你遇到的类转换异常是Java EE迁移到Jakarta EE后的包名不兼容导致的:

  • Tomcat 10基于Servlet 5.0规范,所有Servlet相关API的包名从旧的javax.servlet调整为jakarta.servlet
  • 你当前使用的CXF 3.4.4版本仍基于旧的javax.servlet规范开发,org.apache.cxf.transport.servlet.CXFServlet实现的是javax.servlet.Servlet接口,和Tomcat 10要求的jakarta.servlet.Servlet不属于同一个类,因此加载时抛出类型转换错误。

解决方式

你不需要强制降级Tomcat 9,有两种可选方案:

方案1:保留现有CXF版本,降级Tomcat到9.x

Tomcat 9.x仍然使用javax.servlet包规范,和CXF 3.4.4完全兼容,不需要修改任何业务代码和依赖配置,直接重新部署即可。

方案2:保留Tomcat 10,升级CXF到支持Jakarta规范的版本

CXF从3.5.0版本开始提供Jakarta EE兼容的发行版本,你只需要将所有CXF相关依赖替换为带-jakarta后缀的版本即可,比如Maven依赖需要调整为:

<!-- 示例:替换http传输依赖为jakarta版本 -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http-jakarta</artifactId>
    <version>3.5.0</version> <!-- 可选择更高的稳定版 -->
</dependency>

注意:如果你的业务代码中直接导入了javax.servlet相关类,也需要同步将导入路径改为jakarta.servlet开头的对应类,避免后续出现类找不到错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:15:03