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

Diversos erros com as novas dependencias do spring

O console está dando diversos erros:

2023-08-10T18:03:29.084-03:00 ERROR 12008 --- [  restartedMain] com.zaxxer.hikari.HikariConfig           : Failed to load driver class com.mysql.cj.jdbc.Driver from HikariConfig class classloader jdk.internal.loader.ClassLoaders$AppClassLoader@22d8cfe0

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception with message: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception with message: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader


Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

Caused by: java.lang.RuntimeException: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

Estou a uns 3 dias travado no curso por conta destes erros. Estou utilizando o Eclipse.

O meu POM.XML está desta forma:

<dependencies>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
3 respostas

Leonardo, bom dia.

O seu metodo dataSource não está conseguindo dar load no driver do mysql, o ideal seria você disponibilizar o codigo no seu github para entendermos e análisarmos onde está o problema.

solução!

Eu fiquei intrigado com a dependência do driver MySQL:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
            <scope>runtime</scope>
        </dependency>

Você está usando a versão 5.1.46 do MySQL na sua máquina? Se você tiver o MySQL configurado para rodar no CMD, use o comando 'mysql --version' para verificar a versão do seu MySQL ou, no MySQL Workbench você pode verificar a versão logando uma sessão, clicando em 'Server' e depois em 'Status Server', você vai para uma aba com várias informações, logo no topo, junto com outras informações tem também a versão a ser executada. Dependendo da versão você terá que mudar essa dependência.

Detalhe que a dependência do driver MySQL deu uma pequena mudada a partir da versão 8.0 se você estiver utilizando MySQL 8.0 a dependência correta para o driver é:

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

E também é necessário adicionar no seu application.properties:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

Esse trecho é responsável por informar ao Spring qual é o driver JDBC que deve ser usado para se conectar ao MySQL. Se você não adicionar esse trecho ao arquivo application.properties, o Spring não será capaz de se conectar ao MySQL e você receberá uma mensagem de erro.

Seu application.properties ficará parecido com isso:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/vollmed_api

spring.datasource.username=seuUsername
spring.datasource.password=seuPassword

Obrigado, Mateus! Era isso mesmo, acabei pegando esse repository da net kkkkk. Funcionou este que você me passou.