I have an abstract class address, and two classes that inherit from class address..
classA and classB.
So I found in google the annotation @xmlSeeAlso
I used this, but I don´t know if it´s correct...
Because the stackTrace prints this error
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 11 counts of IllegalAnnotationExceptions
Class has two properties of the same name "bairro"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getBairro()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.bairro
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "cep"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getCep()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.cep
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "codigoMunicipio"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getCodigoMunicipio()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.codigoMunicipio
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "codigoPais"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getCodigoPais()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.codigoPais
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "complemento"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getComplemento()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.complemento
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "logradouro"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getLogradouro()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.logradouro
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "municipio"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getMunicipio()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.municipio
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "numero"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getNumero()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.numero
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "pais"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getPais()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.pais
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "telefone"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getTelefone()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.telefone
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
Class has two properties of the same name "UF"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getUF()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.UF
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(Unknown Source)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at nfeProc.Teste.main(Teste.java:15)
So what´s wrong?
UPDATE
put my code in pastebin.. To explain for you, my classes emitente and destinatario have a field with a endereco (adress) from from enderecoEmitente and enderecoDestinario and they extends from Endereco http://pastebin.com/db0M3rG5
Using your code on paste bin all I had to do was add @XmlAccessorType(XmlAccessType.FIELD) to the
Endereco` to get everything to work correctly (since that class has annotated fields).
@XmlAccessorType(XmlAccessType.FIELD)
public class Endereco {
The problem you are encountering isn't related to inheritance but to the fact that you have annotated the field instead of the property. By default a JAXB implementation will treat public properties and annotated fields as mapped (see: http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html ), this is causing the conflict in your use case:
Class has two properties of the same name "pais"
this problem is related to the following location:
at public java.lang.String nfeProc.NFe.infNFe.Endereco.getPais()
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
this problem is related to the following location:
at private java.lang.String nfeProc.NFe.infNFe.Endereco.pais
at nfeProc.NFe.infNFe.Endereco
at private nfeProc.NFe.infNFe.Endereco nfeProc.NFe.infNFe.emit.Emitente.endereco
at nfeProc.NFe.infNFe.emit.Emitente
at private nfeProc.NFe.infNFe.emit.Emitente nfeProc.NFe.infNFe.InfNFe.emitente
at nfeProc.NFe.infNFe.InfNFe
at private nfeProc.NFe.infNFe.InfNFe nfeProc.NFe.NFe.infNFe
at nfeProc.NFe.NFe
at private nfeProc.NFe.NFe nfeProc.NFeProc.nfe
at nfeProc.NFeProc
The solution is to either annotate the get
method (or set
method), or annotate the field and specify @XmlAccessorType(XmlAccessType.FIELD)
at the class or package level.
I have written a lot about JAXB and inheritance, you may find the following helpful:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.