升级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
相关产品推荐
相关产品推荐

