ERRO Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Boa noite, criei em cadastro de usuário com Swing, mas quando eu clico no botão salvar dispara o erro.

ERRO
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at controler.controlerCliente.UsuarioControler.cadastarUsuario(UsuarioControler.java:11)
at view.CadUsuarioView.bt_salvarActionPerformed(CadUsuarioView.java:569)
at view.CadUsuarioView.access$400(CadUsuarioView.java:8)
at view.CadUsuarioView$5.actionPerformed(CadUsuarioView.java:186)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
CONSTRUÍDO COM SUCESSO (tempo total: 24 minutos 8 segundos)


private void checkBox_clienteActionPerformed(java.awt.event.ActionEvent evt) {                                                 
       
        
       if(checkBox_cliente.isSelected()==true){
           txt_nome.setEnabled(true);
           txt_cnpj.setEnabled(true);
          
           txt_cpf.setEnabled(true);
           txt_endereco.setEnabled(true);
           txt_bairro.setEnabled(true);
           txt_cidade.setEnabled(true);
           txt_estado.setEnabled(true);
           txt_cep.setEnabled(true);
           txt_telefone.setEnabled(true);
           txt_email.setEnabled(true);
           checkBox_fornecedor.setEnabled(false);
           checkBox_fisica.setEnabled(false);
           checkBox_funcionario.setEnabled(false);
           checkBox_juridica.setEnabled(false);
           txt_adminissao.setEnabled(false);
           txt_demissao.setEnabled(false);
           
        }else{
           txt_cnpj.setEnabled(true);
           txt_nome.setEnabled(true);
           txt_cpf.setEnabled(true);
           txt_endereco.setEnabled(true);
           txt_bairro.setEnabled(true);
           txt_cidade.setEnabled(true);
           txt_estado.setEnabled(true);
           txt_cep.setEnabled(true);
           txt_telefone.setEnabled(true);
           checkBox_fornecedor.setEnabled(true);
           checkBox_fisica.setEnabled(true);
           checkBox_funcionario.setEnabled(true);
           checkBox_juridica.setEnabled(true);
           txt_adminissao.setEnabled(true);
           txt_demissao.setEnabled(true);
           
       }
    }                            

 private void bt_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        
        String clinte= checkBox_cliente.getText();
        String cnpj = txt_cnpj.getText();
        String nome = txt_nome.getText();
        String cpf = txt_cpf.getText();
        String endereco = txt_endereco.getText();
        String bairro = txt_bairro.getText();
        String cidade = txt_cidade.getText();
        String estado = (String) txt_estado.getSelectedItem();
        String cep = txt_cep.getText();
        String telefone = txt_telefone.getText();
        String email = txt_email.getText();
        
            
        if(cnpj.isEmpty()){
            JOptionPane.showMessageDialog(null,"Campo Nome é obrigatório.", "Erro na validação  :", JOptionPane.ERROR_MESSAGE);
        }else{
           new Thread();
          String cliente = "cliente";
          Usuario usuario = new Usuario();
          usuario.setTipoUsuario(cliente);
          usuario.setCpf(cpf);
          usuario.setCnpj(cnpj);
          usuario.setNome(nome);
          usuario.setEndereco(endereco);
          usuario.setBairro(bairro);
          usuario.setCidade(cidade);
          usuario.setEstado(estado);
          usuario.setCep(cep);
          usuario.setTel_01(telefone);
          usuario.setEmail(email);
          
                  
          try {
              UsuarioControler usuarioControler = new UsuarioControler();
              usuarioControler.cadastarUsuario(usuario);
                        
          } catch (SQLException e) {
              JOptionPane.showConfirmDialog(null,"Ocorreu um erro 1 :"+e.getMessage(),"Erro :", JOptionPane.ERROR_MESSAGE);
          }catch(ClassNotFoundException se){
               JOptionPane.showConfirmDialog(null,"Ocorreu um erro 2 :"+se.getMessage(),"Erro :", JOptionPane.ERROR_MESSAGE);
          }   
        }
    }                  

Gostaria uma ajuda de vocês.

Obrigado pela ajuda


Em algum trecho o que deveria ser uma variável de referência apontando para um objeto está configurada como null. Poste a classe UsuárioControler.java para vermos.

[]'s

Em algum trecho o que deveria ser uma variável de referência apontando para um objeto está configurada como null. Poste a classe UsuárioControler.java para vermos.

[]'s

package controler.controlerCliente;

import dao.UsuarioDao;
import java.sql.SQLException;
import model.Usuario;

public class UsuarioControler {
    
    public void cadastarUsuario(Usuario user)throws SQLException,ClassNotFoundException{
        UsuarioDao.salvar(user);
    }
    
     public void excluirUsuario(Usuario user)throws SQLException,ClassNotFoundException{
         UsuarioDao.excluir(user);
    }
     
      public void atualizarUsuario(Usuario user)throws SQLException,ClassNotFoundException{
         UsuarioDao.atualizar(user);
    }
}

Esse salvar é do pacote .

public static void salvar(Usuario user) throws SQLException{
        try{
            Connection con = ConexaoDB.abrirConexao();
            Statement stat = con.createStatement();
            String query = "insert into usuario (tipoUsuario,nome,cnpj,endereco,bairro,cidade,cep,tel_01,email) "
                    + "value ("+user.getTipoUsuario()+"',,'"+user.getNome()+"','"+user.getCnpj()+"','"+user.getEndereco()+"','"+user.getBairro()+"','"+user.getCidade()+"','"+user.getCep()+"',"'+user.getTel_01()+"','"+user.getEmail()+"')";
            
            stat.execute(query);
            stat.close();
            con.close();
            
        } catch (SQLException e) {
            throw  new SQLException("Erro no salvar usuario :"+e.getMessage());
        }
    }

Como eu disse, na linha 11 da classe em questão, a variável está configurada com null. O problema está ao configurar objeto que eh passado como o metodo de inserção, não? Desculpe, estou meio cego agora…

Se você está com dificuldade em depurar o código, talvez seja um extenso, popular um objeto do tipo que o método espera, assim, eliminando variáveis.

[]'s

Como “a variável está configurada com null.”? Estou mandando para o controler o objeto usuario. Desculpa, mas entendi.

Como “a variável está configurada com null.”? Estou mandando para o controler o objeto usuario. Desculpa, mas não entendi.

Tente utilizar o debuger para saber o que contém a variavel user.

[]'s

Na sua query, VALUES seria o correto!!

Outra coisa, sugiro que quando você for setar dados na query, use o PreparedStatement:

public static void salvar(Usuario user) throws SQLException{  
        try{  
            Connection con = ConexaoDB.abrirConexao();  
            String query = "INSERT INTO usuario (tipoUsuario,nome,cnpj,endereco,bairro,cidade,cep,tel_01,email) "  
                    + "VALUES ? ? ? ? ? ? ? ? ?";
            
		PreparedStatement ps = con.prepareStatement(query);
				
				ps.setString(1, user.getTipoUsuario());
				ps.setString(2, user.getNome());
				ps.setString(3, user.getCnpj());
                                //E assim por diante até setar todos os campos do BD sendo que cada número corresponde ao "?" que tem na query.
 
            ps.executeUpdate();
            con.close();  
              
        } catch (SQLException e) {  
            throw  new SQLException("Erro no salvar usuario :"+e.getMessage());  
        }  
    }  

Também estou tendo um problema parecido.

Minha Classe de Conexão:

package Conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class BD {
	public Connection connection = null;
	private final String DRIVER = "com.mysql.jdbc.Driver";
	private final String DBNAME = "banco";
	private final String URL = "jdbc:mysql://localhost:3306/" + DBNAME;
	private final String LOGIN = "root";
	private final String SENHA = "";
	
	
	public boolean getConnection() {

		try {
			Class.forName(DRIVER);
			connection = DriverManager.getConnection(URL, LOGIN, SENHA);
			System.out.println("Conectou");
			return true;
		} catch (ClassNotFoundException erro) {
			System.out.println("Driver não encontrado " + erro.toString());
			return false;
		} catch (SQLException erro) {
			// TODO Auto-generated catch block
			System.out.println("Falha ao Conectar " + erro.toString());
			return false;
		}

	}

	public void close() {
		try {
			connection.close();
			System.out.println("Fechou Conexao");
		} catch (SQLException erro) {
		}

	}

}

Esses é o Bean:

package Login;

public class Login {

	private int codigo;
	private String nome, senha;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

}

Essa é minha DAO

package Login;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

**import Conexao.BD;**

public class LoginDAO {
	public BD bd;
	private PreparedStatement statement;
	private ResultSet resultSet;
	private String men, sql;
	public Login login;

	public LoginDAO() {
		bd = new BD();
		login = new Login();
	}

	public int getProximoCodigo() {

		sql = "SELECT (MAX(CODIGO)+1) AS NOVO_CODIGO_LOGIN FROM LOGIN";

		int novoCodigo = 0;
		try {
			statement = bd.connection.prepareStatement(sql);
			resultSet = statement.executeQuery();
			if (resultSet.next()) {

				novoCodigo = resultSet.getInt("NOVO_CODIGO_FILMES");
			}
		} catch (SQLException e) {

		}
		return novoCodigo;
	}

	public boolean checkLogin(String nome, String senha) {
		sql = "SELECT NOME,SENHA FROM LOGIN WHERE NOME = ? AND SENHA = ?";
		boolean check = false;

		try {
			
			statement = bd.connection.prepareStatement(sql);
			statement.setString(1, nome);
			statement.setString(2, senha);
			resultSet = statement.executeQuery();

			if (resultSet.next()) {
				check = true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return check;

	}

}

Essa a minha Tela de Login:

package Login;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import Menu.Menu;

public class GuiLogin extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField tfLogin;
	private JLabel lbLogin;
	private JLabel lbSenha;
	private JButton btLogar;
	private JButton btCancelar;
	private JPasswordField pfSenha;
	private static GuiLogin frame;
	public LoginDAO login;

	public GuiLogin() {
		inicializarComponentes();
		definirEventos();

	}

	private void inicializarComponentes() {

		setTitle("Login no Sistema");
		setBounds(0, 0, 250, 200);
		setLayout(null);

		tfLogin = new JTextField(5);
		pfSenha = new JPasswordField(15);
		lbLogin = new JLabel("Login");
		lbSenha = new JLabel("Senha");

		ImageIcon imgGravar = new ImageIcon("imagens/Gravar.png");
		btLogar = new JButton("", imgGravar);
		btLogar.setToolTipText("Logar");

		ImageIcon imgCancelar = new ImageIcon("imagens/cancel.png");
		btCancelar = new JButton("", imgCancelar);
		btCancelar.setToolTipText("Cancelar");

		tfLogin.setBounds(100, 30, 120, 25);
		lbLogin.setBounds(30, 30, 80, 25);
		lbSenha.setBounds(30, 75, 80, 25);
		pfSenha.setBounds(100, 75, 120, 25);
		btLogar.setBounds(80, 120, 30, 25);
		btCancelar.setBounds(125, 120, 30, 25);

		add(tfLogin);
		add(lbSenha);
		add(lbLogin);
		add(btLogar);
		add(btCancelar);
		add(pfSenha);
		
		

	}

	private void definirEventos() {

		btLogar.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
             
				String usuario = String.valueOf(tfLogin.getText());
				String senha = String.valueOf(pfSenha.getPassword());
				System.out.println("Usuario: " + usuario + " senha: " + senha);
				
				LoginDAO novo = new LoginDAO();

				if (novo.checkLogin(usuario, senha)){
					System.out.println("verificando Usuario");
					dispose();
					abrirMenu();
					JOptionPane.showMessageDialog(null,
							"Login Efetuado com Sucesso");
				} else {
					JOptionPane.showMessageDialog(null,
							"Login ou Senha Invalida!");
				}

			}
              
		});

		btCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
	}

	public static void main(String[] args) {
		frame = new GuiLogin();
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
		frame.setLocation((tela.width - frame.getSize().width) / 2,
				(tela.height - frame.getSize().height) / 2);
		frame.setVisible(true);

	}

	public void abrirMenu() {
		Menu frame = new Menu();
		Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
		frame.setLocation((tela.width - frame.getSize().width) / 2,
				(tela.height - frame.getSize().height) / 2);
		frame.setVisible(true);
	}

}

Abaixo está o Erro que está dando no meu Código:

 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Login.LoginDAO.checkLogin(LoginDAO.java:45)
	at Login.GuiLogin$1.actionPerformed(GuiLogin.java:79)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$400(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Considerações:

As linhas apontadas como causadoras do erro são as que possuem os códigos abaixo:

na DAO linha 45:

statement = bd.connection.prepareStatement(sql);

Na Tela linha: 79

if (novo.checkLogin(usuario, senha)){

Eu num entendi muito o erro, se alguém puder ajudar.

Agradeço desde já.