1
resposta

[Bug] ClassNotFoundException: Could not load requested class : org.postgres.Driver

Fiz como indica no vídeo mas esta exceção não me deixa prosseguir, o código do persistence.xml está assim:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">

        <persistence-unit name="loja_roupas" transaction-type="RESOURCE_LOCAL">
            <properties>
                <property name="javax.persistence.jdbc.driver" value="org.postgres.Driver"/>
                <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/loja"/>
                <property name="javax.persistence.jdbc.user" value="postgres"/>
                <property name="javax.persistence.jdbc.password" value="postgres"/>

                <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
            </properties>
        </persistence-unit>
</persistence>

código do pom.xml abaixo:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>br.com.klaus</groupId>
  <artifactId>loja_roupas</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
              <configuration>
                  <release>11</release>
              </configuration>
          </plugin>
      </plugins>
  </build>
  
  <dependencies>
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>5.4.27.Final</version>
      </dependency>
      
      <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <version>42.2.15</version>
      </dependency>
  </dependencies>
  
</project>
1 resposta

Olá, Gabriel! Tudo bem?

O erro ClassNotFoundException: Could not load requested class : org.postgres.Driver indica que o Java não está conseguindo encontrar a classe do driver do PostgreSQL.

Verificando o seu arquivo persistence.xml, notei que você configurou o driver com o valor org.postgres.Driver. No entanto, o nome correto da classe do driver do PostgreSQL é org.postgresql.Driver. Por isso, o Java não está conseguindo carregar a classe, pois o nome está incorreto.

Você pode corrigir esse problema atualizando a propriedade javax.persistence.jdbc.driver no seu arquivo persistence.xml para o nome correto do driver. Aqui está como deveria ficar:

<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>

Além disso, versão da dependência do PostgreSQL declarada no seu pom.xml apresenta vulnerabilidades. Isso não trará problemas em um ambiente de estudos, mas, caso for utilizar em projetos que vão ser publicados, é necessário verificar as vulnerabilidades presentes nas dependências.

Após fazer essa correção no nome da classe do driver no seu persistence.xml, tente executar seu projeto novamente. Isso deve resolver o problema de ClassNotFoundException que você está enfrentando.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software