Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problema com o import de javax.xml.bind

Na aula 7 do curso de Java e XML no primeiro vídeo o instrutor faz os imports de javax.xml.bind para fazer uso de JAXB. Mas ao colocar o seguinte import:

import javax.xml.bind.JAXBContext

O Eclipse acusa o erro "The import javax.xml.bind cannot be resolved".

Gostaria, por favor, de saber como faço isso para contornar o problema?

Estou usando o Eclipse Photon e o Java 10.

3 respostas

Boa noite Rafael, acredito que falta a lib(jar) no seu projeto.

Nesse link: https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api/2.3.1

Em Files jar (125 KB) você baixa o jar e coloca no projeto.

Tenta fazer e me retorna se deu certo.

Guilherme,

Boa tarde. Fiz o import do jaxb-api.jar no projeto pelo Java Build Path, os erros do código sumiram e o código ficou assim antes de roda-lo:

package br.com.alura.teste;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;

import br.com.alura.model.Venda;

public class MapeiaXMLDireto {

    public static void main(String[] args) throws Exception {

        JAXBContext jaxbContext = JAXBContext.newInstance(Venda.class);
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
        Venda venda = (Venda) unmarshaller.unmarshal(new File("src/vendas.xml"));
        System.out.println(venda);

    }

}

Mas surgiu a seguinte mensagem no console ao rodar esse código:

Exception in thread "main" javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:269)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:412)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
    at br.com.alura.teste.MapeiaXMLDireto.main(MapeiaXMLDireto.java:13)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
    at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:267)
    ... 4 more

Não entendi muito bem qual é o problema. Se puder ajudar, agradeço.

solução!

Guilherme,

Boa tarde. Eu consegui resolver o problema por meio de um artigo indicado pelo Nico Steppat no fórum da Alura. Abaixo segue o post do Nico:

https://cursos.alura.com.br/forum/topico-exception-in-thread-main-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception-68221

E o link do artigo que ele indicou:

https://alexandreaquiles.com.br/2017/10/13/sofrencia-com-java-9-cade-meu-jaxb/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software