Marshaller - nor any of its super class is known to this context [RESOLVIDO]

3 respostas
P

Pessoal,

Estou tentando converter uma classe em XML com o JAXB, mas ta dando o erro:
javax.xml.bind.JAXBException: class br.com.NFe.CabecMsg nor any of its super class is known to this context.
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:556)
	at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:478)
	at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328)

(A classe é a usada para enviar o cabeçalho da Nota Fiscal Eletronica)

package br.com.NFe;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "versaoDados"
})
@XmlRootElement(name = "cabecMsg")
public class CabecMsg {

    @XmlElement(required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    protected String versaoDados;
    @XmlAttribute(required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    protected String versao;

    public String getVersaoDados() {
        return versaoDados;
    }

    public void setVersaoDados(String value) {
        this.versaoDados = value;
    }

    public String getVersao() {
        return versao;
    }

    public void setVersao(String value) {
        this.versao = value;
    }

}

E o trecho do codigo para tentar gerar o XML eh:

...
JAXBContext jc = JAXBContext.newInstance("br.com.NFe");;
Marshaller m = jc.createMarshaller();  
m.setProperty( m.JAXB_ENCODING, "ISO-8859-1" );  
m.setProperty( m.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
String pXmlGerado = "C:\\temp\\teste.xml";

FileOutputStream os = new FileOutputStream(pXmlGerado);
m.marshal( pMensagem, os);  
os.close();
...

Alguem já se deparou com esse problema?

Vlw !!

3 Respostas

P

Opa…

Achei um link que deu uma dica sobre as annotations…
http://osdir.com/ml/dev-tuscany.apache.org/2009-05/msg00658.html

Mas não tenho @AllowPassByReference, da erro de compilação… =/

Estou procurando como colocar esse annotation… mas se alguem souber outra forma de indicar o uso por valor…
Ah… estou usando JDk 1.5

Fui !

P

Opa… resolvido…

Adicionei a minha classe ao ObjectFactory.java do JAXB…
O novo método que precisei criar…

/** * Create an instance of {@link CabecMsg } * */ public CabecMsg createCabecMsg() { return new CabecMsg(); }

Só não entendi porque que na hora de gerar os .java dos .xsd ele não pegou esse link… =/

Fui !

E

Salvou meu dia Obrigado rsrs

Criado 10 de agosto de 2009
Ultima resposta 30 de nov. de 2009
Respostas 3
Participantes 2