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

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)

[code]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;
}

}
[/code]

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

[code]…
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();
…[/code]

Alguem já se deparou com esse problema?

Vlw !!

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 !

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 !

1 curtida

Salvou meu dia Obrigado rsrs