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

Aplicação falha ao iniciar

Primeiro o erro foi em criar a tabela, e acredito que ainda persista o problema. Ao colocar o entityManager o começou a dar esse erro abaixo.

APPLICATION FAILED TO START
***************************

Description:

A component required a bean of type 'javax.persistence.EntityManagerFactory' that could not be found.


Action:

Consider defining a bean of type 'javax.persistence.EntityManagerFactory' in your configuration.

Application:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@SpringBootApplication
public class MudiApplication {

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

}

Classe pedido:

@Entity
public class Pedido {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

Properties:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/mudi
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
server.port=8080

Dependencias do pom.xml

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

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

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

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

Agradeço.

3 respostas

Olá Lucas, tudo bem?

O seu MudiApplication deveria estar com esse exclude={DataSourceAutoConfiguration.class} mesmo?

Sem isso, o erro é pior:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'inMemoryDatabaseShutdownExecutor' defined in class path resource [org/springframework/boot/devtools/autoconfigure/DevToolsDataSourceAutoConfiguration.class]: Unsatisfied dependency expressed through method 'inMemoryDatabaseShutdownExecutor' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.mariadb.jdbc.Driver

Outra causa:

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]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.mariadb.jdbc.Driver

Causa 3:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.mariadb.jdbc.Driver

Causa 4:

Caused by: java.lang.IllegalStateException: Cannot load driver class: org.mariadb.jdbc.Driver

Ou seja, para colocar esse "exclude" ai, já procurei muito como resolver e nada funciona. Tinha coisas que durante o vídeo o próprio programa não estava aceitando e o do professor nem apontava erro, como quando ele colocou o private no final PedidoRepository pedidoRepository;. O meu não aceita. Mas meu maior problema mesmo é conseguir criar a conexao com o banco.

solução!

Me tornei um desenvolvedor de solução de bugs para banco de dados nesse curso, sinto-me capaz de resolver vários problemas com banco de dados (é sério!).

exclude={DataSourceAutoConfiguration.class} Como eu coloquei ali em cima, você só vai usar isso se você não quer conectar o seu spring com o banco de dados.

Sobre o meu problema:

O curso sempre ia trocando de banco de dados, e eu sempre fui acompanhando para não me limitar a uma coisa só, acredito que com isso posso ter me atrapalhado, ou as portas ficaram "embaralhadas" pois em uma aplicação eu usava a 3306 em outra eu usava a 3307, uma porta local era 8080, outra 8090 e assim vai. Exclui tudo, com exceção do HeidiSQL, instalei tudo novamente, o mysql na versão 5 alguma coisa pois a mais recente também tava dando erro, configurei tudo do 0, tive outros bugs, mas consegui resolver. De qualquer forma, irei postar aqui como ficou o meu pom.xml e as "porperties" para ajudar caso alguem precise:

Properties:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3307/mudi     (Quando fui colocar a padrão, outro programa estava usando, então pra ser pratico usei esta)
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

Dependecies:

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

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

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

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

Se o problema persistir, é ir checando do começo, primeiro o banco de dados, ver se está tudo ok, depois vai para o HeidiSQL, ver se está conectando com o seu MariaDB e por último você chega no chega no Eclipse.