微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jaxb:XSD中的两个声明在objectFactory类中引起冲突

如何解决Jaxb:XSD中的两个声明在objectFactory类中引起冲突

我使用jaxb2-maven-plugin从XSD生成Java源。

首先我遇到类似错误

org.xml.sax.SAXParseException: A class/interface with the same name "TypeX" is already in use. Use a class customization to resolve this conflict.

我通过应用具有以下内容的binding.xml来解决了所有问题:

...
    <jxb:bindings schemaLocation="../schema1.xsd">
        <jxb:bindings node="//xs:complexType[@name='TypeX']">
            <jxb:class name="TypeXFromSchema1"/>
        </jxb:bindings>
    </jxb:bindings>
    <jxb:bindings schemaLocation="../schema2.xsd">
        <jxb:bindings node="//xs:complexType[@name='TypeX']">
            <jxb:class name="TypeXFromSchema2"/>
        </jxb:bindings>
    </jxb:bindings>
...

但是在那之后,我开始遇到与相同类型有关的其他错误。我从错误日志中的行号推导出来。错误是:

com.sun.istack.SAXParseException2: Two declarations cause a collision in the ObjectFactory class.
    at com.sun.tools.xjc.ErrorReceiver.error (ErrorReceiver.java:56)
...

出什么问题了?从我的角度来看,我确切地告诉了生成的类名应该是什么样子,ObjectFactory应该根据此名称创建(所有的getter,setter以及生成的任何东西)。

或者我还必须做什么?我尝试使用

为架构指定其他包
<jxb:bindings schemaLocation="../schemas1.xsd">
    <jxb:schemaBindings>
        <jxb:package name="com.example.myschema1"/>
    </jxb:schemaBindings>
</jxb:bindings>

<jxb:bindings schemaLocation="../schema2.xsd">
    <jxb:schemaBindings>
        <jxb:package name="com.example.myschema2"/>
    </jxb:schemaBindings>
</jxb:bindings>

但是它以相同的错误结束。我也在pom.xml的“配置”部分中尝试过:

  <args>
    <arg>-XautoNameResolution</arg>
  </args>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。