1
resposta

Error creating bean with name 'entityManagerFactory' - NoClassDefFoundError

No treinamento Spring Boot: Agilidade no desenvolvimento java com Spring

Na segunda aula(Configurando Spring Boot Data JPA - 11:26), configuramos a conexão com o banco de dados.

Porém ao rodar o projeto recebo esse erro:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' 
...
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
...
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
...

Meu arquivo de configuração com a conexão:

package br.com.alura.listavip;

import javax.sql.DataSource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

@SpringBootApplication
public class Configuracao {

    public static void main(String[] args) {
        SpringApplication.run(Configuracao.class, args);
    }

    @Bean
    public DataSource dataSource() {

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/listavip");
        dataSource.setUsername("root");
        dataSource.setPassword("1234");
        return dataSource;
    }
}

Meu banco é o Mysql, está configurado com o usuário 'root' e a senha '1234' seu endereço é localhost e sua porta é 3306 Fiquei na dúvida quanto à linha: dataSource.setUrl("jdbc:mysql://localhost:3306/listavip"); Na parte listavip, está se referindo ao banco de dados? Pois eu criei um banco de dados com o mesmo nome, seguindo o DUMP disponibilizado na aula 01 do treinamento.

O erro é realmente relacionado à conexão com o banco? Desde já agradeço

1 resposta

Olá Vinicius, tudo bem?

O erro que você está enfrentando está relacionado à falta da classe "javax.xml.bind.JAXBException". Esse erro geralmente ocorre quando a biblioteca JAXB não está sendo encontrada no classpath do seu projeto.

Você pode adicionar a dependência do JAXB no arquivo "pom.xml" do seu projeto:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

Após adicionar essa dependência, você pode tentar rodar o projeto novamente e verificar se o erro persiste.

Quanto à sua dúvida sobre a linha dataSource.setUrl("jdbc:mysql://localhost:3306/listavip");, sim, a parte "listavip" se refere ao nome do banco de dados. Se você criou um banco de dados com o mesmo nome, seguindo o DUMP disponibilizado na aula 01, então está correto.

Espero ter ajudado e bons estudos!