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

升级XJC/Jakarta后生成otherAttributes字段致运行问题求助

解决Jakarta升级后XJC自动生成@XmlAnyAttribute字段的冲突问题

你使用org.patrodyne.jvnet:hisrc-higherjaxb40-maven-plugin插件、增量编译模式升级到Jakarta后,遇到了Can't have @XmlAnyAttribute when a base class has it already的错误——原因是XJC现在会自动生成带@XmlAnyAttribute注解的otherAttributes字段,而之前版本不会生成。以下是两种禁用该字段自动生成的方法:

方法1:直接配置Maven插件参数

在插件的配置块中添加<generateAnyAttribute>false</generateAnyAttribute>,强制关闭自动生成该字段:

<plugin>
    <groupId>org.patrodyne.jvnet</groupId>
    <artifactId>hisrc-higherjaxb40-maven-plugin</artifactId>
    <version>你的插件版本号</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <!-- 保留你原有的其他配置 -->
                <generateAnyAttribute>false</generateAnyAttribute>
            </configuration>
        </execution>
    </executions>
</plugin>

方法2:使用绑定文件全局控制

如果需要更灵活的生成规则,可以创建一个绑定文件(比如src/main/resources/binding.xml),通过全局绑定禁用anyAttribute的生成:

<jaxb:bindings xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb" version="4.0">
    <jaxb:globalBindings>
        <jaxb:anyAttribute>false</jaxb:anyAttribute>
    </jaxb:globalBindings>
</jaxb:bindings>

然后在Maven插件配置中引入这个绑定文件:

<configuration>
    <!-- 保留你原有的其他配置 -->
    <bindingFiles>
        <bindingFile>src/main/resources/binding.xml</bindingFile>
    </bindingFiles>
</configuration>

这两种方法都能阻止XJC自动生成带@XmlAnyAttribute的otherAttributes字段,解决基类与生成类的注解重复冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:13:29