3
respostas

Erro ao importar o projeto

Quando importo o projeto para o meu workspace dá erro de compilação na classe Carrinho. O erro está no bloco ERRO.

package br.com.alura.loja.modelo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

///ERRO
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
///ERRO

import com.google.gson.Gson;
import com.thoughtworks.xstream.XStream;

E quando eu retiro esses import's o projeto compila normalmente, porém na hora de subir o servidor, dá uma Exception gigantesca.

3 respostas

Oi Lucas,

O problema é sua versão Java.

A partir do Java 9 entrou um novo sistema do módulos no mundo Java. A principio uma boa ideia, no entanto não todos os módulos são carregados por padrão.

Em outras palavras, o JaxB vem junto com o JRE mas não é carregado automaticamente. Como o Hibernate acha que o modulo foi carregado (como era antes), vc recebeu o erro NoClassDefFoundError.

A noticia boa é que vc pode pedir pra a JVM que ela carregue esse modulo e tudo volte a funcionar.

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

Outra solução é instalar o JDK 8 ao invés de usar um Java 9 (e mais recentes tbm)

Será que não tem como usar umas dependências no Maven mais atualizadas que funcionem em uma JVM superior a 8?

Tem que configurar o plugin de compilação do Maven e passar o famoso --add-modules. Tipo assim:

POM.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.7.0</version>
  <configuration>
    <compilerArgs>
      <arg>--add-modules</arg>
      <arg>java.xml.bind</arg>
    </compilerArgs>
  </configuration>
</plugin>