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

Application Error - Could not load JDBC driver class [com.postgresql.Driver]

Minha aplicação não carrega, dentre várias linhas de código há as seguintes causas:

 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'entityManagerFactory' defined in class br.com.casadocodigo.loja.conf.JPAConfiguration: Unsatisfied dependency expressed through constructor argument with index 0 of type [javax.sql.DataSource]: : Error creating bean with name 'dataSource' defined in class br.com.casadocodigo.loja.conf.JPAProductionConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource br.com.casadocodigo.loja.conf.JPAProductionConfiguration.dataSource() throws java.net.URISyntaxException] threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.postgresql.Driver]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class br.com.casadocodigo.loja.conf.JPAProductionConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource br.com.casadocodigo.loja.conf.JPAProductionConfiguration.dataSource() throws java.net.URISyntaxException] threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.postgresql.Driver]

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class br.com.casadocodigo.loja.conf.JPAProductionConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource br.com.casadocodigo.loja.conf.JPAProductionConfiguration.dataSource() throws java.net.URISyntaxException] threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.postgresql.Driver]

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource br.com.casadocodigo.loja.conf.JPAProductionConfiguration.dataSource() throws java.net.URISyntaxException] threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.postgresql.Driver]

 Caused by: java.lang.ClassNotFoundException: com.postgresql.Driver
2019-11-05T14:53:40.74795+00:00 app[web.1]:     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)

Caused by: java.lang.IllegalStateException: Could not load JDBC driver class [com.postgresql.Driver]
4 respostas

Meu @Bean SQL em JPAConf está assim:

@Bean
    @Profile("dev")
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUsername("root");
        dataSource.setPassword("12345");
        dataSource.setUrl("jdbc:mysql://localhost:3306/casadocodigo?useTimezone=true&serverTimezone=UTC");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

        return dataSource;
    }

E meu @Bean postgre em JPAProdConf assim:

@Bean
    public DataSource dataSource() throws URISyntaxException {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.postgresql.Driver");
        //usuario:senha@host:port/path
        URI dbUrl = new URI(environment.getProperty("DATABASE_URL"));

        dataSource.setUrl("jdbc:postgresql://"+dbUrl.getHost()
        +":"+dbUrl.getPort()+dbUrl.getPath());
        dataSource.setUsername(dbUrl.getUserInfo().split(":")[0]);
        dataSource.setPassword(dbUrl.getUserInfo().split(":")[1]);

        return dataSource;
    }

No seu pom .xml tem essa dependência?

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4-1201-jdbc41</version>
</dependency>

Tem sim:

<!-- Postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4-1201-jdbc41</version>
        </dependency>

O plugin de webapp-runner também:

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.github.jsimone</groupId>
                                    <artifactId>webapp-runner</artifactId>
                                    <version>7.0.57.2</version>
                                    <destFileName>webapp-runner.jar</destFileName>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

Eu consigo disponibilizar o código pelo Heroku? Ou somente pelo Github? WebApp

Upei meu projeto no Google Drive

solução!

Acredito que nessa versão do postgress que você está usando o driver class name é "org.postgresql.Driver" ao invés de "com.postgresql.Driver", por isso do erro

Could not load JDBC driver class [com.postgresql.Driver]