java.lang.ClassNotFoundException: org.postgresql.Driver

O driver não funciona quando quero adicionar uma informação via web pro banco de dados, porém, no intellij, eu consigo adicionar informações no banco de dados tranquilamente já coloquei a dependencia do driver no pom.xml. Apos muitas pesquisas vi que pode ser problema no classpath… alguém pode me ajudar?

Coloca o pom.xml para darmos uma olhada


4.0.0
br.com.vendasonline
vendasdb
0.0.1-SNAPSHOT
war

<build>
    <finalName>vendasdb</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4-1201-jdbc41</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
</dependencies>

A dependência está correta… não parece ser problema de driver… Como você está realizando a conexão???

poderia er mais especifico na sua pergunta? hehe

Você acrescentou o driver ao projeto. Agora, falta você criar/gerenciar uma conexão, algo como

Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost/projeto, "root", "root");

onde você criou essa conexão? Como a aplicação sabe onde está o banco de dados?

public class ConnectionFactory {
public static Connection getConnection() {
try{
Class.forName(“org.postgresql.Driver”);//tenta achar a classe
System.out.println(“achou a classssseeeeeeeeee”);
} catch (ClassNotFoundException e) {
e.printStackTrace();//class not found exception
System.out.println("Erro ao carregar o Driver ");
}
try {
Connection conect = DriverManager.getConnection(“jdbc:postgresql://localhost:5435/vendasdb”,
“postgres”, “****”);
JOptionPane.showMessageDialog(null, “Conected with database!”);
return conect;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(“Failed to connect to the database”);
}
}
}

A porta de conexão no postgresql é a 5432 e não 5435… verifica se resolve o seu problema

no meu caso é 5435 msm!

wowww…
nunca tinha visto tantos localhosts juntos… hehe

É o seguinte: o driver está listado corretamente no pom e a sua interface de conexão está correta… Qual é o erro que você identifica no console ao fazer o deploy da aplicação? Ele chega a subir no servidor de aplicação?

java.lang.ClassNotFoundException: org.postgresql.Driver
Erro ao carregar o Driver
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at br.com.vendasonline.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:14)
at br.com.vendasonline.jdbc.ClientDAO.(ClientDAO.java:18)
at Controllers.UserController.doPost(UserController.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/vendasdb
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at br.com.vendasonline.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:21)
at br.com.vendasonline.jdbc.ClientDAO.(ClientDAO.java:18)
at Controllers.UserController.doPost(UserController.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

isso acontece quando coloca dados a partir da web, eai da esse erro

o erro é mt bizarro… eu n sei pq ta dando isso kkkk

Gustavo_Henriques

Por incrível que pareça, mas o seu problema pode ser de fato o classpath

O que acontece é que você realizou a instalação de 4 versões diferentes de postgresql na sua máquina. Provavelmente pode estar referenciando uma versão diferente da 9.4. Para verificar, acesse o painel de controle (tecla windows + i), Sistema e Segurança, Sistema, clica em Configurações avançadas do sistema. Clique em Variáveis de Ambiente. Na variável de sistema Path verifica qual postgresql está sendo referenciado. Eu recomendaria você alterar para C:\Program Files\PostgreSQL\9.4\bin e fazer um teste com a sua aplicação.

@Gustavo_Henriques faça o que eu te disse no outro tópico que você criou. Pensei que esse fosse outra coisa! kkk

Fiz o que o lugusmao fez e deu certo!! obrigado a todos que me ajudaram!!!

1 curtida