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

Java17升级:寻求Jakarta版CXF Swagger2Feature替代方案

解决方案:升级CXF至4.x版本并替换对应Swagger组件

你的核心问题是旧版CXF的Swagger2Feature依赖javax命名空间API,无法适配Java 17及Jakarta EE规范。以下是具体的替代方案:

  1. 升级CXF主版本到4.x系列
    CXF从4.0版本开始完全迁移到Jakarta EE规范,所有javax相关的依赖都替换为jakarta命名空间,完美兼容Java 17+。

  2. 替换Swagger支持组件
    原cxf-rt-rs-service-description-swagger组件在CXF 4.x中被拆分为针对不同OpenAPI版本的组件:

    • 若需继续支持Swagger 2.0(对应OpenAPI v2),使用cxf-rt-rs-service-description-openapi-v2
    • 若要升级到OpenAPI v3,可使用cxf-rt-rs-service-description-openapi-v3
  3. 替换核心类
    原来的org.apache.cxf.jaxrs.swagger.Swagger2Feature对应替换为org.apache.cxf.jaxrs.openapi.v2.Swagger2Feature,这个类的依赖已经全部改为jakarta命名空间(比如jakarta.servlet.ServletContext、jakarta.ws.rs.core.Application等),完全适配你的Java 17环境。

  4. Maven依赖示例(OpenAPI v2/Swagger 2.0)

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-service-description-openapi-v2</artifactId>
    <version>4.0.0+</version> <!-- 建议使用最新稳定版,比如4.0.3或更高 -->
</dependency>
  1. 注意事项
  • 同步升级所有其他CXF相关依赖(如cxf-rt-frontend-jaxrs、cxf-core等)到4.x版本,避免版本冲突
  • 如果项目中还有其他javax相关的JAX-RS或Servlet依赖,也需要替换为对应的jakarta版本(比如jakarta.ws.rs:jakarta.ws.rs-api、jakarta.servlet:jakarta.servlet-api)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 23:22:11