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

Spring Boot3.0 Java17下jaxb30-maven-plugin解析WSDL报错

问题根源

你遇到的报错是因为jaxb30-maven-plugin默认把WSDL当成XML Schema(XSD)来解析。WSDL的根元素是<definitions>(属于WSDL专属命名空间),而XSD的根元素是<xsd:schema>,解析器校验时发现命名空间不匹配,所以抛出错误。虽然代码能生成,但插件的解析逻辑还是会触发这个报错。

修复步骤

1. 修正插件配置,明确处理WSDL

把原配置里的schemaDirectory和schemaIncludes换成WSDL专用配置,同时开启扩展支持(解析WSDL需要JAXB的WebService扩展):

<plugin>
    <groupId>com.evolvedbinary.maven.jvnet</groupId>
    <artifactId>jaxb30-maven-plugin</artifactId>
    <version>0.15.0</version>
    <dependencies>
        <!-- 换成JAXB 3.x版本的runtime,和插件版本匹配 -->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>3.0.2</version>
        </dependency>
        <!-- 添加工具类依赖,确保能解析WSDL -->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-xjc</artifactId>
            <version>3.0.2</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- 指定WSDL文件所在目录 -->
        <wsdlDirectory>${resourcePath}/wsdl/</wsdlDirectory>
        <wsdlIncludes>
            <include>*.wsdl</include>
        </wsdlIncludes>
        <!-- 开启扩展,启用WSDL解析支持 -->
        <extension>true</extension>
    </configuration>
</plugin>

2. 清理版本冲突

你当前插件依赖的是jaxb-runtime:2.3.1,这是JAXB 2.x版本,和jaxb30插件不兼容,必须换成3.x版本的依赖,避免类加载冲突。

3. 检查WSDL命名空间

确认你的WSDL文件根元素<definitions>包含正确的WSDL命名空间,比如:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             ...>
验证

执行mvn clean generate-sources,查看控制台是否还出现解析错误。如果代码生成正常且无报错,就说明修复成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:24:56