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

升级org.apache.cxf至4.x版本出现构建错误,求迁移指导

CXF 3.3.7 升级到4.x版本的迁移修改指南

问题描述

原有Java应用使用org.apache.cxf:cxf-rt-frontend-jaxrs:3.3.7,升级至CXF 4.x版本后出现构建错误,错误日志如下:

Not a valid jaxb or jaxws binding file, please check the namespace
at org.apache.cxf.tools.wsdlto.frontend.jaxws.customization.CustomizationParser.addBinding(CustomizationParser.java:540)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.frontend.jaxws.customization.CustomizationParser.parse(CustomizationParser.java:117)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.customize(JAXWSDefinitionBuilder.java:115)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:188)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:156)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:402)
[[1;33mWARNING[m]     at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
[[1;33mWARNING[m]     at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
[[1;33mWARNING[m]     at org.apache.cxf.maven_plugin.wsdl2java.ForkOnceWSDL2Java.main(ForkOnceWSDL2Java.java:51)

迁移修改要点

1. 修正绑定文件的命名空间

CXF 4.x对JAXB/JAXWS绑定文件的命名空间校验更严格,需替换为Jakarta EE规范的命名空间:

  • JAXB绑定文件:将原http://java.sun.com/xml/ns/jaxb替换为https://jakarta.ee/xml/ns/jaxb,并指定版本为3.0或更高,示例:
    <jaxb:bindings xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb" version="3.0">
        <!-- 绑定内容 -->
    </jaxb:bindings>
    
  • JAXWS绑定文件:将原http://java.sun.com/xml/ns/jaxws替换为https://jakarta.ee/xml/ns/jaxws,示例:
    <jaxws:bindings xmlns:jaxws="https://jakarta.ee/xml/ns/jaxws" version="3.0">
        <!-- 绑定内容 -->
    </jaxws:bindings>
    

2. 替换代码中的API导入路径

CXF 4.x基于Jakarta EE规范,需将所有Java EE的javax包导入替换为Jakarta的jakarta包:

  • 原import javax.xml.bind.* → import jakarta.xml.bind.*
  • 原import javax.jws.* → import jakarta.jws.*
  • 原import javax.ws.rs.* → import jakarta.ws.rs.*

3. 更新Maven插件与依赖

  • 确保cxf-codegen-plugin版本与CXF 4.x一致,插件配置中引入Jakarta版本的API依赖:
    <plugin>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-codegen-plugin</artifactId>
        <version>4.0.0</version> <!-- 对应CXF 4.x版本 -->
        <dependencies>
            <dependency>
                <groupId>jakarta.xml.bind</groupId>
                <artifactId>jakarta.xml.bind-api</artifactId>
                <version>3.0.1</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>3.0.1</version>
            </dependency>
        </dependencies>
    </plugin>
    
  • 更新项目中所有CXF相关依赖至4.x版本,确保依赖的API为Jakarta版本。

4. 验证绑定文件结构

检查绑定文件根元素是否匹配:JAXB绑定文件根元素为<jaxb:bindings>,JAXWS绑定文件根元素为<jaxws:bindings>,避免命名空间拼写错误或根元素类型不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:13:15