Eu estou tentando mapear o seguinte para um novo nome de classe através do plugin maven-jaxb2.
Eu tenho esse elemento que existe em dois XSD "s no projeto (namespaces diferentes).
Eu quero mapear esta instância para um nome de classe diferente para que ele compila.
<xs:complexType name="ResponseCommonData">
<xs:sequence>
<xs:element name="RequestID" type="xs:string"/>
<xs:element name="BusinessError" form="qualified" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="BusinessErrorCommonData"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BusinessCommonData">
<xs:sequence>
<xs:element name="Code" type="xs:string" form="unqualified" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
O bindings.xjb eu tenho é ...
<jaxb:bindings schemaLocation="CFRV2.0.0.xsd" node="/xs:schema">
<jaxb:bindings node="xs:complexType[@name="ResponseCommonData"]">
<jaxb:property name="CFRResponseCommonData" />
</jaxb:bindings>
<jaxb:bindings node="xs:complexType[@name="BusinessCommonData"]">
<jaxb:property name="CFRBusinessCommonData" />
</jaxb:bindings>
</jaxb:bindings>
O erro que recebo é isso ...
org.xml.sax.SAXParseException: A class/interface with the same name
"com.ResponseCommonData" is already in use.
Use a class customization to resolve this conflict.
Se eu remover o elemento interno BusinessError de ResponseCommonData, o JAXB continuará, mas me dando uma mensagem semelhante sobre outra classe de tipo complexo.
Respostas:
1 para resposta № 1Usar jaxb:class
ao invés de jaxb:property
.