[RESOLVIDO] Conexao em PostgreSQL com NetBeans IDE 11.0

42 respostas
programação
doctorsilva

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

42 Respostas

rodriguesabner

Boa tarde, cara o erro em si é bem específico. Você está pegando todo o stackTrace? Posta ele completo por favor!

Jonathan_Medeiros

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.

doctorsilva

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)
T

O driver o PostgreSQL foi adicionado na Library do Projeto no NetBeans 11.0?

doctorsilva

boa noite, já varias vezes e nada.

T

Posta o código deste arquivo ConectaBd.java, por favor.

doctorsilva

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;
     }
    

    }

}

T

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.

doctorsilva

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)
T

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.

doctorsilva

blz, vou verificar obrigado por enquanto

doctorsilva

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.

T

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.

doctorsilva

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

doctorsilva

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

rodriguesabner

Troca a versão do PostgreSQL. Baixa no site

T

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/

doctorsilva

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.

rodriguesabner

Volta pro netbeans 8.2, mais facil

doctorsilva

blz, vou instalar aqui, desde já agradeço sua atenção. muito obrigado mesmo

T

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.

doctorsilva

boa noite, instalei o Netbeans 8.0.1 e esta dando o mesmo erro

doctorsilva

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

}

doctorsilva

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;
    }        
}

}

rodriguesabner

Fala Silva, qual o erro?

rodriguesabner

String driver = “org.postgresql.Driver”;

String caminho = jdbc:postgresql://…"

T

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

doctorsilva

valeu vou fazer as alteracoes, depois entro em contato. obrigado

rodriguesabner

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();
    }

}
doctorsilva

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

rodriguesabner

Qual é o erro?

doctorsilva

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

doctorsilva
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

rodriguesabner

Você tem certeza que colocou o Driver? Tira um print mostrando o driver na biblioteca!

doctorsilva

deixa eu te fazer uma pergunta, onde adiciono o driver corretamente no netbeans? acredito que estou adicionando no lugar errado.

rodriguesabner

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 - image
2 - image
3 - image

doctorsilva

isso mesmo, ai que estou adicionando

doctorsilva

se vc tiver o teamviewer ai eu libero para vc entrar na minha maquina para vc ver

rodriguesabner

Não precisa, tira print e manda aqui!

doctorsilva

espera ai agora vi e vou ter que achar, um momento por favor

doctorsilva

muito obrigado meu amigo, deu certo que Deus te abencoe pela sua ajuda, valeu mesmo.

doctorsilva

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.

Criado 20 de junho de 2019
Ultima resposta 4 de jul. de 2019
Respostas 42
Participantes 4