Olá pessoal alguém sabe usar o JAXB?
Não consigo fazer nada com o JAXB será que alguém poderia me dar uma ajuda?
Estou seguindo o seguinte tutorial:
http://blog.caelum.com.br/2008/02/27/jaxb-xml-e-java-de-maos-dadas/
Mas toda vez que eu vou executar o código principal:
try{
JAXBContext context = JAXBContext.newInstance("br.com.caelum");
Marshaller marshaller = context.createMarshaller();
JAXBElement<Carro> element = new ObjectFactory() {}.createCarro(carro);
marshaller.marshal(element, System.out);
}
catch(Exception e){}
Ele lança o seguinte erro:
run:
java.lang.NoClassDefFoundError: caelumjaxb/Main
Caused by: java.lang.ClassNotFoundException: caelumjaxb.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: caelumjaxb.Main. Program will exit.
Exception in thread "main" Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)
Será que alguém poderia me dar uma ajuda?
[]'s.
Poste aqui a estrutura de pacotes e as suas classes.
Jóia Rafael?
A minha hieraquia de pacotes está da seguinte forma:
br.com.caelum
-Carro.java
-Main.java
-carro.xsd
br.com.caelum.resources
-carro.xml
E os meus arquivos são:
carro.xml
<?xml version="1.0" encoding="UTF-8"?>
<carro>
<nome>Fusca</nome>
<portas>2</portas>
<motoristas>
<motorista>
<nome>Guilherme</nome>
</motorista>
<motorista>
<nome>Leonardo</nome>
</motorista>
</motoristas>
</carro>
carro.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="carro" type="Carro" />
<xsd:complexType name="Carro">
<xsd:sequence>
<xsd:element name="nome" type="xsd:string" minOccurs="1"
maxOccurs="1" nillable="false"/>
<xsd:element name="portas" type="xsd:int" minOccurs="1"
maxOccurs="1" nillable="false"/>
<xsd:element name="motoristas" type="Motorista" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Motorista">
<xsd:sequence>
<xsd:element name="nome" minOccurs="1" maxOccurs="1"
type="xsd:string" nillable="false"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Main.java
public class Main {
public static void main(String[] args) throws JAXBException {
try{
JAXBContext context = JAXBContext.newInstance("br.com.caelum");
Marshaller marshaller = context.createMarshaller();
JAXBElement<Carro> element = new ObjectFactory().createCarro(carro);
marshaller.marshal(element, System.out);
}
catch(Exception e){}
}
}
Tem como vc Rafael ou alguém me ajudar?
[]'s.
Rafael no marcador do netbeans da classe Main.java linha 7 está aparecendo quando eu clico nele aparece
a seguinte mensagem:
javax.naming.spi.OjectFactory is abstract; cannot bbe instantiated
cannotfind symbol
symbol variable carro
location: class br.com.caelum.Main
Será que tem como vc ou alguém me dar uma ajuda Rafael?
[]'s.