bom dia Pessoal, já vi vários tópicos aqui fiz varios testes e não deu certo já inseri no classpath como falado mais o erro continua, alguem pode me ajudar, já baixei o driver e nada tambem.
java.lang.ClassNotFoundException: org.postgresql.Driver
[RESOLVIDO] Conexao em PostgreSQL com NetBeans IDE 11.0
42 Respostas
Boa tarde, cara o erro em si é bem específico. Você está pegando todo o stackTrace? Posta ele completo por favor!
Perguntas referente a programação você deve direcionar na categoria programação, a categoria Meta GUJ é para tratar informações relevantes para todos os usuários do fórum.
Estou movendo seu tópico para a categoria correta, em suas próximas publicações de tópicos direcione-os para as categorias corretas.
Erro:
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:291)
at DAO.ConectaBd.conexao(ConectaBd.java:15)
at com.factoring_swing.ui.controller.MainFrameController.<init>(MainFrameController.java:28)
at com.factoring_swing.Runner.main(Runner.java:7)
O driver o PostgreSQL foi adicionado na Library do Projeto no NetBeans 11.0?
boa noite, já varias vezes e nada.
Posta o código deste arquivo ConectaBd.java, por favor.
desde já agradeco sua atenção.
package DAO;
import java.sql.*;
import javax.swing.JOptionPane;
/**
*
-
@author DoctorSilva
*/
public class ConectaBd {public static Connection conexao(String fonte, String usuario, String senha) throws ClassNotFoundException {
try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(fonte, usuario, senha); JOptionPane.showMessageDialog(null, "Conectado com sucesso! "); return con; } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(null, "Erro em ClassNotFoundException: " + e.getMessage()); return null; } catch(SQLException e){ JOptionPane.showMessageDialog(null, "Erro em SQLException: " + e.getMessage()); return null; } catch(NoClassDefFoundError e){ JOptionPane.showMessageDialog(null, "Erro em NoClassDefFoundError: " + e.getMessage()); return null; }
}
}
Aparentemente consegui verificar o seu erro.
No método:
Alterei para este, mantendo os demais códigos:
public Connection conexao(String fonte, String usuario, String senha) {
No NetBeans 11.0, com seu projeto aberto, clica em Clean and Build Project e depois Run Project.
Informe o erro se ocorrer.
boa tarde, fiz conforme me falou olha o erro ai, desde já agradeço sua cooperação.
Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: Uncompilable source code - non-static method conexao(java.lang.String,java.lang.String,java.lang.String) cannot be referenced from a static context
at frmLogin.(frmLogin.java:32)
at frmLogin$3.run(frmLogin.java:193)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Qual o código nesta linha? Como foi removido o throws ClassNotFoundException, dá uma verificada no restante do projeto para remover o throws Class… no código. Outra coisa é que o método de conexão não é mais static e é bom rever isto no projeto também.
blz, vou verificar obrigado por enquanto
boa noite, tirei todos os metodos ClassNotFoundException, mais o erro persiste, vale lembrar que já faz 7 dias que estou tentando conectar e nada. mais vou continuar tentando.
Que estranho!
A minha classe de conexão utilizo conforme abaixo.
O seu código, em comentário, adaptei ao meu projeto para testar e funciona.
Veja se ajuda.
public class ConexaoBD {
public Statement stm;
public ResultSet rs;
private final String driver = "org.postgresql.Driver";
private final String url = "jdbc:postgresql://localhost:5432/banco";
private final String user = "postgres";
private final String password = "suasenha";
public static Connection con;
// public Connection conecta() {
//
// try {
//// Class.forName("org.postgresql.Driver");
// con = DriverManager.getConnection(url, user, password);
// JOptionPane.showMessageDialog(null, "Conectado com sucesso! ");
// return con;
//
//// } catch (ClassNotFoundException e) {
//// JOptionPane.showMessageDialog(null, "Erro em ClassNotFoundException: " + e.getMessage());
//// return null;
//
// } catch (SQLException e) {
// JOptionPane.showMessageDialog(null, "Erro em SQLException: " + e.getMessage());
// return null;
//
// } catch (NoClassDefFoundError e) {
// JOptionPane.showMessageDialog(null, "Erro em NoClassDefFoundError: " + e.getMessage());
// return null;
// }
//// return con;
// }
public Connection conecta() { // método responsável pela conexão com a base de dados.
try {
System.setProperty("jdbc.Drivers", driver);
con = DriverManager.getConnection(url, user, password);
System.out.println("Conexão com o banco de dados efetuada com sucesso!");
} catch (SQLException ex) {
System.out.println("Erro Driver: " + ex);
JOptionPane.showMessageDialog(null, "Erro ao conectar com o banco de dados!\n" + ex.getMessage());
}
return con;
}
}
Alterne os comentários dos métodos, tente ajustar para seu código e verifica se conecta.
Vai postando as dificuldades.
boa noite, consegui no Intellij Idea mais no netBeans ainda nao certo, mais eu vou usar o intellij.
vou testar com esta sua rotina, muito obrigado
boa noite, fiz como vc falou dá uma olhada.
Erro Driver: java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/bd_factoring
Troca a versão do PostgreSQL. Baixa no site
O arquivo .jar do PostgreSQL que está utilizando no seu projeto tem que ser equivalente à versão do SGDB que está utilizando.
Baixe a versão mais atual do JDBC neste endereço oficial:
https://jdbc.postgresql.org/
A versão do SGDB de acordo com o seu sistema operacional está neste endereço:
https://www.postgresql.org/download/
boa noite, fiquei uns dias sem mexer por nao obter exito na solucao apos baixar o banco de dados postgresql, fiz tudo isso e ainda esta dando o mesmo erro. se puder me dar mais algumas dicas eu agradeço.
Volta pro netbeans 8.2, mais facil
blz, vou instalar aqui, desde já agradeço sua atenção. muito obrigado mesmo
Concordo em parte com o @rodriguesabner.
Porém, utilizo o Netbeans 8.2 e 11.0 sem problemas nos projetos desenvolvidos.
Se puder, poste o conteúdo do arquivo frmLogin.java para lhe ajudar.
boa noite, instalei o Netbeans 8.0.1 e esta dando o mesmo erro
public class frmLogin extends javax.swing.JFrame {
Connection con = null;
PreparedStatement PStmt = null;
ConectaBd cb = new ConectaBd();
ResultSet rs = null;
/**
* Creates new form frmLogin
*/
public frmLogin() {
con = cb.conexao("jdbc:postgresql://localhost:5432/bd_factoring","postgres","9j#d2!&_A0");
if (con == null) {
System.exit(0);
}
setResizable(false);
this.setType(java.awt.Window.Type.UTILITY);
initComponents();
centralizarComponente();
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
txtLogin = new javax.swing.JTextField();
txtSenha = new javax.swing.JPasswordField();
btnLogin = new javax.swing.JButton();
btnCancelar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Informe login e senha");
jLabel2.setText("Login:");
jLabel3.setText("Senha:");
txtSenha.setText("jPasswordField1");
btnLogin.setText("Login");
btnCancelar.setText("Cancelar");
btnCancelar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCancelarActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel2))
.addGroup(layout.createSequentialGroup()
.addGap(74, 74, 74)
.addComponent(jLabel3)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(43, 43, 43))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(116, 116, 116)
.addComponent(jLabel1))
.addGroup(layout.createSequentialGroup()
.addGap(102, 102, 102)
.addComponent(btnLogin)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnCancelar)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txtLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(txtSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(45, 45, 45)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnLogin)
.addComponent(btnCancelar))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(frmLogin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(frmLogin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(frmLogin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(frmLogin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frmLogin().setVisible(true);
}
});
}
public void centralizarComponente() {
Dimension ds = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dw = getSize();
setLocation((ds.width - dw.width) / 2, (ds.height - dw.height) / 2);
}
// Variables declaration - do not modify
private javax.swing.JButton btnCancelar;
private javax.swing.JButton btnLogin;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JTextField txtLogin;
private javax.swing.JPasswordField txtSenha;
// End of variables declaration
}
public class ConectaBd {
public Connection conexao(String fonte, String usuario, String senha) {
try {
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(fonte, usuario, senha);
JOptionPane.showMessageDialog(null, "Conectado com sucesso! ");
return con;
} catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "Erro em ClassNotFoundException: " + e.getMessage());
return null;
} catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erro em SQLException: " + e.getMessage());
return null;
} catch(NoClassDefFoundError e){
JOptionPane.showMessageDialog(null, "Erro em NoClassDefFoundError: " + e.getMessage());
return null;
}
}
}
Fala Silva, qual o erro?
String driver = “org.postgresql.Driver”;
String caminho = jdbc:postgresql://…"
Falta o método de acesso, sem o qual o seu frmLogin não sabe o que fazer quando, após digitado o login e a senha, o usuário clica no btnLogin.
Inicialmente o seu construtor está assim:
public frmLogin() {
con = cb.conexao("jdbc:postgresql://localhost:5432/bd_factoring","postgres","9j#d2!&_A0");
if (con == null) {
System.exit(0);
}
setResizable(false);
this.setType(java.awt.Window.Type.UTILITY);
initComponents();
centralizarComponente();
initComponents();
}
Neste ponto o initComponents(); também está duplicado e a minha sugestão é alterar assim:
public frmLogin() {
initComponents();
setResizable(false);
this.setType(java.awt.Window.Type.UTILITY);
centralizarComponente();
con = cb.conexao("jdbc:postgresql://localhost:5432/bd_factoring","postgres","9j#d2!&_A0");
if (con == null) {
System.exit(0);
}
}
Se me permitir, sugiro a visualização do vídeo do colega Paulo Perrone no Youtube que demonstra como fazer uma tela de login com acesso para a tela principal do sistema.
https://www.youtube.com/watch?v=OfsCClnnY6U
Abraços
valeu vou fazer as alteracoes, depois entro em contato. obrigado
Cara, eu passei o código pra vc conectar, vc testou ao menos? Vi que comentou agora em um outro tópico que não conseguiu.
Vou te passar um exemplo, vc só precisa mudar TRES COISAS:::::
Troca onde tá “seu_banco”, pelo nome do seu banco,
usuario: seu usuario,
senha: sua senha.
NAO TEM ERRO BROTHER
private final String caminho = "jdbc:postgresql://localhost:5432/seu_banco";// responsável por setar o local do banco de dados
private String usuario = "seu_usuario";
private String senha = "sua_senha";
Código:
import java.sql.*;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class ConectaBanco {
public Statement stm;// responsável por preparar e realizar pesquisas no banco de dados
public ResultSet rs;// responsável por armazenar o resultado de uma pesquisa passada para o Statement
private final String driver = "org.postgresql.Driver";// responsável por identificar o serviço de banco de dados
private final String caminho = "jdbc:postgresql://localhost:5432/seu_banco";// responsável por setar o local do banco de dados
private String usuario = "seu_usuario";
private String senha = "sua_senha";
public Connection conn; // responsável por realizar a conexão com o banco de dados
public void conexao() { //Metodo Responsável por realizar a conexão com o banco
try {// tentativa inicial
Class.forName(driver);
conn = DriverManager.getConnection(caminho, usuario, senha); // realiza a conexão com o banco de dados
//JOptionPane.showMessageDialog (null, "Conectado com Sucesso ao Banco de Dados!"); // imprime uma caixa de mensagens
System.out.println("Conectado"); // imprime uma caixa de mensagens
} catch (SQLException ex) { // excessão
System.out.println("Erro ao conectar");
Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void executaSQL(String sql) {
try {
stm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stm.executeQuery(sql);
} catch (SQLException ex) {
//JOptionPane.showMessageDialog (null, "Erro de ExecutaSQL!\n Erro:" + ex.getMessage());
}
}
public void desconecta() {//metodo para fechar a conexão com o banco de dados
try {
conn.close(); //fecha a conexão
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao fechar a conexão!\n Erro:" + ex.getMessage());
}
}
public static void main(String[] args) {
new ConectaBanco().conexao();
}
}
boa noite abner, eu testei como vc me mandou deu o mesmo erro, eu acredito que seja a minha maquina, estou usando o windows7 e de uns tempo para cá ele nao abre o firewall de jeito nenhum, vou fazer um teste na maquina do meu genro que é nova e windows 10 depois eu retorno, desde de já agradeço sua grande atenção, estou testando,. blz
Qual é o erro?
o mesmo erro que nao localizou o driver, já adicionei na libraries, como disse amanhã vou testar na maquina do meu genro. erro Classform=“org.postgresql.Driver”, boa noite e obrigado mais uma vez
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:291)
at DAO.ConectaBd.conexao(ConectaBd.java:24)
at financeiro.frmLogin.(frmLogin.java:33)
at financeiro.Financeiro.main(Financeiro.java:19)
o erro continua, instalei em outra maquina zerada com o windows10 e deu o mesmo erro tambem.
pode me ajudar fazendo um grande favor
Você tem certeza que colocou o Driver? Tira um print mostrando o driver na biblioteca!
deixa eu te fazer uma pergunta, onde adiciono o driver corretamente no netbeans? acredito que estou adicionando no lugar errado.
Se aí estiver em português, vai ser:
1-Bibliotecas,
2-Adicionar Biblioteca
3-Procura a biblioteca do postgresql, e aperta em adicionar biblioteca
1 - 
2 - 
3 - 
isso mesmo, ai que estou adicionando
se vc tiver o teamviewer ai eu libero para vc entrar na minha maquina para vc ver
Não precisa, tira print e manda aqui!
espera ai agora vi e vou ter que achar, um momento por favor
muito obrigado meu amigo, deu certo que Deus te abencoe pela sua ajuda, valeu mesmo.
estava adicionando no lugar errado como eu te falei, ai quando vc mostrou eu pude ver, acredita faz mais de 10 dias que estou tentando esta conexao. mais valeu.