IDEA 配置CXF解析WSDL报错

在使用IDEA和CXF 2.7.18版本尝试解析WSDL时遇到AssertionError,错误信息涉及到JAXB和XML Schema解析。问题可能与JDK 1.8的bug有关。将JDK从1.8切换到1.6后,解析恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用IDEA 配置了CXF解析WSDL的时候报错

  • 使用版本

    • JDK 1.8
    • CXF apache-cxf-2.7.18
  • 报错信息

    我这个报错信息也有问题,知道的留言解答一下怎么配置
    Exception in thread “main” java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: jar:file:/D:/DevelopTools/apache-cxf-2.7.18/lib/jaxb-xjc-2.2.6.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; schema_reference: ���� accessExternalSchema �������õ����ƶ������� ‘file’ ����, ����޷���ȡ�����ĵ� ‘xjc.xsd’��
    at com.sun.tools.xjc.SchemaCache.newValidator(SchemaCache.java:80)
    at com.sun.tools.xjc.reader.internalizer.SCDBasedBindingSet.apply(SCDBasedBindingSet.java:237)
    at com.sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.java:541)
    at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:269)
    at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:95)
    at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:462)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:714)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:270)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:412)
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:184)

    报错信息

  • 错误原因

    在网上找了下原因大致是jdk1.8对cxf支持的一个bug吧

  • 解决方法

    我当时使用的是JDK1.8 切换成JDK1.6解析就正常了

<think>好的,我需要帮助用户在IntelliJ IDEA中使用Apache CXF根据WSDL生成Java客户端代码。首先,我得回顾一下用户提供的引用内容,确保答案准确。 用户提到了引用[2]和[4],其中提到使用CXFwsdl2java工具,以及配置环境变量。我需要整理步骤,确保用户能够一步步操作。首先,应该安装Apache CXF,并配置环境变量,这可能包括设置CXF_HOME和Path变量。然后,在IDEA配置CXF插件或使用命令行工具生成代码。 接下来,用户需要在IDEA中运行wsdl2java命令。可能需要通过终端或者外部工具配置来执行。引用[3]提到了使用java命令运行WSDL2Java,但那是针对Axis的,而用户需要的是CXF,所以应该使用CXFwsdl2java脚本。 另外,用户可能需要配置JDK,确保JAVA_HOME正确设置,如引用[4]所述。还要注意WSDL文件的路径,生成代码时需要指定包名和输出目录。 最后,可能需要验证生成的代码是否正确,并添加到项目中。还要考虑是否需要添加CXF的依赖到项目的构建文件中,比如Maven或Gradle。用户可能不熟悉这些步骤,所以需要详细说明每个环节,避免遗漏关键点。</think>以下是在 IntelliJ IDEA 中通过 Apache CXF 根据 WSDL 生成 Java 客户端代码的详细步骤: --- ### 步骤 1:安装 Apache CXF 1. 访问 [Apache CXF 官网](https://cxf.apache.org/) 下载最新版本(如 3.5.5) 2. 解压到本地目录(例如 `D:\apache-cxf-3.5.5`) 3. 配置环境变量: - 新建系统变量 `CXF_HOME`,值为解压路径(例如 `D:\apache-cxf-3.5.5`)[^4] - 在 `Path` 变量中添加 `%CXF_HOME%\bin` --- ### 步骤 2:准备 WSDL 文件 1.WSDL 文件保存到本地(例如 `D:\wsdl\service.wsdl`) 2. 检查 WSDL 文件有效性:通过浏览器或工具(如 SoapUI)验证是否可访问 --- ### 步骤 3:在 IntelliJ IDEA 中生成代码 #### 方法一:通过命令行工具(推荐) 1. 打开 IDEA 的 Terminal(Alt+F12) 2. 执行生成命令: ```bash wsdl2java -client -d src/main/java -p com.example.client -encoding UTF-8 D:\wsdl\service.wsdl ``` - `-client`:生成客户端代码 - `-d`:指定输出目录 - `-p`:定义包名 - `-encoding`:设置编码格式 #### 方法二:通过 IDEA 插件 1. 安装插件:`File > Settings > Plugins` 搜索 `CXF WebServices` 并安装 2. 右键项目目录选择 `New > WebService Client` 3. 输入 WSDL 路径和输出目录,点击生成[^2] --- ### 步骤 4:验证生成结果 1. 检查 `src/main/java/com/example/client` 目录下是否生成以下文件: - Service 接口 - Service 实现类 - DTO 数据传输对象 2. 在项目中添加 CXF 依赖(Maven): ```xml <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.5.5</version> </dependency> ``` --- ### 常见问题解决 1. **环境变量失效**:重启 IDEA 使环境变量生效 2. **WSDL 访问失败**:尝试将 WSDL 下载到本地再生成 3. **依赖冲突**:使用 `mvn dependency:tree` 检查依赖树 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值