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

jaxb2-maven-plugin生成XSD时忽略命名空间:两个类存在相同XML类型问题

解决Java 11迁移中jaxb2-maven-plugin忽略命名空间的XSD生成问题

我之前遇到过几乎一模一样的问题!当时也是从Java 8迁到Java 11,用jaxb2-maven-plugin 2.x生成XSD时碰到了这个命名空间识别的bug,折腾了好一阵才搞定。

问题根源

你用的org.codehaus.mojo:jaxb2-maven-plugin:2.5.0是为Java EE时代的JAXB(javax.xml.bind)设计的,而现在你依赖的是Jakarta EE的JAXB 3.x(jakarta.xml.bind)——旧版本插件无法正确识别Jakarta注解里的namespace属性,所以把两个不同命名空间下的Toyota类当成了重复的XML类型。

解决方案

直接升级插件到支持Jakarta EE的3.x版本就可以解决这个问题,我当时用的是3.1.0版本(目前稳定且兼容性良好),具体修改如下:

修改pom.xml中的插件版本

把插件的版本从2.5.0替换为3.1.0,其余配置可以保持不变:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>3.1.0</version> <!-- 升级到支持Jakarta的版本 -->
    <executions>
        <execution>
            <id>schemagen</id>
            <goals>
                <goal>schemagen</goal>
            </goals>
            <phase>generate-resources</phase>
        </execution>
    </executions>
    <configuration>
        <sources>
            <source>src/main/java/org/example/car</source>
            <source>src/main/java/org/example/bus</source>
        </sources>
        <outputDirectory>schemas</outputDirectory>
        <transformSchemas>
            <transformSchema>
                <uri>https://car.example.org/</uri>
                <toFile>car.xsd</toFile>
            </transformSchema>
            <transformSchema>
                <uri>https://bus.example.org/</uri>
                <toFile>bus.xsd</toFile>
            </transformSchema>
        </transformSchemas>
    </configuration>
</plugin>

可选:添加调试参数(如果升级后仍有问题)

如果升级后还是遇到异常,可以添加参数强制schemagen识别命名空间并输出详细日志:

<configuration>
    <!-- 保留原有配置 -->
    <arguments>
        <argument>-npa</argument> <!-- 禁止生成重复的package-info.java -->
        <argument>-verbose</argument> <!-- 输出详细日志,方便排查问题 -->
    </arguments>
</configuration>

验证方法

运行命令:

mvn clean generate-resources

正常情况下,插件会正确识别两个类的命名空间,生成car.xsd和bus.xsd,不会再报Two classes have the same XML type name "toyota"的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:12:35