Java.lang.NullPointerException

17 respostas
J

Oi Galera, sou nova por aqui entao nao sei muito bem como funciona! Mas eu estava precisando de uma ajuda de voces!!!

Estou desenvolvendo um projetinho aqui, e estou iniciando em JAVA agora, e quando eu clico no meu botao de pesquisa, apenas pisca a tela e nao da erro nenhum.
Ai fui dar uma olhadinha na console, e nela me trouxe o seguinte erro:

java.lang.NullPointerException
at br.com.lepostiche.Handler.AtrasoNFHandler.pesquisarNotas(AtrasoNFHandler.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)

Alguem sabe por favor me dizer o que pode ser?? Vou colocar aqui o codigo do meu botao...Pode ser? Obrigada...Beijos
public String pesquisarNotas(){ 

		NotaFiscalDAO nfDAO = new NotaFiscalDAO();

		SimpleDateFormat formatadorDeData = new SimpleDateFormat("dd/MM/yyyy");

		List<AtrasoVO> atrasos = null;

			try {
				atrasos = nfDAO.getAtrasos(login.getUsuario(), atraso.getPrazo(), formatadorDeData.parse(atraso.getDtNota()));
			} catch (ParseException e) {
				
				e.printStackTrace();
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			this.setListaAtraso(atrasos);
			
		return "ok";
	}

Gente, debugando, descobri que o meu login estava vindo nulo. Mas pq esta vindo nulo se eu estou preenchendo as informacoes?! Me ajudem, please!!![size=18] [/size]

17 Respostas

marcelo.bellissimo

Algo nessa linha está nulo:

atrasos = nfDAO.getAtrasos(login.getUsuario(), atraso.getPrazo(), formatadorDeData.parse(atraso.getDtNota()));

Qual IDE voce usa pra programar em Java? Use o debuger para verificar o que está ocorrendo…

saulods

Da uma olhadinha em AtrasoNFHandler.java, Linha: 60

thiago.correa

Lista de possíveis objetos nulos, se estiver usando uma IDE depure o código para descobrir qual deles, caso contrário, sugiro imprimir uma a uma para tentar descobrir, são elas:

-login
-atraso
-atraso.getDtNota() (nesse caso o atributo dtNota do objeto atraso)

J

Eu uso o ECLIPSE Galileo

Entao, ele realmente esta me trazendo nulo o campo LOGIN... mas pq esta trazendo nulo se eu coloco a informacao 0306-CNORT????
Vou colocar aqui meu codigo todo

public class AtrasoNFHandler implements Serializable{

	private static final long serialVersionUID = 1L;

	private AtrasoVO atraso = new AtrasoVO();
	
	private LoginHandler login;
	
	
	public AtrasoNFHandler() {
		
		this.login = (LoginHandler)FacesContext.getCurrentInstance().getExternalContext()
        .getSessionMap().get("login");

		
	}
	
	
	public AtrasoVO getAtraso() {
		return atraso;
	}

	public void setAtraso(AtrasoVO atraso) {
		this.atraso = atraso;
	}

	private List<AtrasoVO> listaAtraso = new LinkedList<AtrasoVO>();

	public List<AtrasoVO> getListaAtraso() {
		return listaAtraso;
	}

	public void setListaAtraso(List<AtrasoVO> listaAtraso) {
		this.listaAtraso = listaAtraso;
	}

	public String pesquisarNotas(){ 

		NotaFiscalDAO nfDAO = new NotaFiscalDAO();

		SimpleDateFormat formatadorDeData = new SimpleDateFormat("dd/MM/yyyy");

		List<AtrasoVO> atrasos = null;
		
			try {
				atrasos = nfDAO.getAtrasos(login.getLogin(), atraso.getPrazo(), formatadorDeData.parse(atraso.getDtNota()));
			} catch (ParseException e) {
			
				e.printStackTrace();
			} catch (Exception e) {
		
				e.printStackTrace();
			}


			this.setListaAtraso(atrasos);

		return "ok";
	}

}
marcelo.bellissimo

Você está usando JSF pelo que eu ví… eu não entendo de JSF, e nem quero entender… mas pelo que pude ver seu objeto “login” que você está tentando recuperar da sessão provavelmente está vindo null…

this.login = (LoginHandler)FacesContext.getCurrentInstance().getExternalContext() .getSessionMap().get("login");

use o debugger, com certeza algo está vindo nulo, independentemente de você estar passando os valores na tela…

J

Marcelo,

Acho que eh exatamente isso que esta acontecendo…=/
Eu realmente estou usando JSF…
E estou tentando recuperar da minha sessao o valor…

Mas o que eu fiz de errado!? Pq sera que esta dando erro!?

marcelo.bellissimo

Sinceramente não vou saber te responder, nunca me dei bem com o comportamento aleatório do JSF… nunca precisei dele pra fazer minhas aplicações, e já fiz sistemas enormes sem usar ele… e mesmo em sistemas pequenos, ele sempre dá muito problema… desistí dele faz tempo…

Alguém se habilita a ajudar a moça ??

edit1:
Aliás, se você pretende usar JSF daqui pra frente, vá se acostumando com esse tipo de situação… ele quase nunca faz o que se espera que ele faça, então não estranhe se voce seguir alguns tutoriais e não conseguir os mesmos resultados… e sua tecla de interrogação vai ser bem usada daqui pra frente…

J

Rs, agora fiquei motivada Marcelo...!

Eh o que estou aprendendo na faculdade, e para falar a verdade, eu achei um pouquinho mais facil de entender. Pq eu trabalho com VB e foi muito dificil passar a mexer com orietacao a objetos!!!

Mas...rs! Deixa eu falar... Eu acho que ja resolvi esse problema. Desisti de pegar da sessao e peguei direto da minha pagina de login!!! =)

Agora estou com outro problema...rs!
Acho que eh a minha conexao com o banco. Como essa eh a primeira vez que estou fazendo conexao com o banco em java, acho que nao estou fazendo certo. Alguem pode me ajudar??

Primeiro o erro...

java.sql.SQLException: Exceção de E/S: Unknown host specified
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.lepostiche.dbmanager.ConexaoBanco.conectarBanco(ConexaoBanco.java:11)
at br.com.lepostiche.DAO.NotaFiscalDAO.getAtrasos(NotaFiscalDAO.java:77)
at br.com.lepostiche.Handler.AtrasoNFHandler.pesquisarNotas(AtrasoNFHandler.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)

package br.com.lepostiche.dbmanager;

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

public class ConexaoBanco {
	
	
	public Connection conectarBanco() throws Exception {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection oracle = DriverManager.getConnection("jdbc:oracle:thin:@GEMCO","usuario","senha");
		
		return oracle;
	}
}

Na verdade eu nem sei se o erro eh realmente aqui.
Sera que eh pq eu nao peguei o driver do oracle? Se for isso, onde eu pego!?

adrianoseven

Oi querida,

o driver da Oracle vc pode baixar no site:

http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

e depois vc deve copiar o driver para dentro da sua aplicação, no caso do Eclipse vá em:
Project > Java Build Path > (selecione a aba Libraries ) > (botão) Add External Jars … > (selecionar o driver).

Bom, se o problema for de driver, a explicação está aí.
Espero ter ajudado. :wink:

marcelo.bellissimo

O problema não parece ser de driver… pela mensagem, é outra coisa… veja:

java.sql.SQLException: Exceção de E/S: Unknown host specified

Ela diz Unknown host specified, pelo jeito esse servidor que você está tentando acessar não existe, ou o nome está errado… bem, o fato é que ele não conseguiu encontrar seu servidor…

Uma boa tentativa seria alterar a String de conexão, o formato que se usa é esse:

jdbc:oracle:thin:@servidor:porta:nome_do_servico

Exemplo:

jdbc:oracle:thin:@172.12.1.2:1521:ORCL

Outra boa tentativa seria substituir o nome GEMCO pelo IP real do servidor… teste aí e diga se funcionou…

fabio_kaspar

Olá pessoal, sou novo aqui e estou literalmene apanhando com um problema que não consigo solucionar. Eu tenho um programa de cadastro e ao compilar ele mostra no console que o programa está conectado com o Mysql. Bem, até aí tudo bem. Mas quando eu vou clicar no botão cadastrar ele gera um erro que estou a dias tentando decifrar. Se vocês puderem me dar uma dica já ficarei muito grato.
Eis aqui o meu código:

private static class BtnCadClActionListener implements ActionListener {
    		String nome = null;
    	 	  String rg = null;
    	 	  String cpf = null;
    	 	  String tel = null;
    	 	  String end = null;
    	 	 String query = null;
             static PreparedStatement select = null;
       public void actionPerformed(ActionEvent e) {

    	      nome = txtNmCl.getText();
        	  rg = txtRgCl.getText();
              cpf = txtCpfCl.getText();
              tel = txtTelCl.getText();
              end = txtEndCl.getText();
              query = "INSERT INTO cliente (cl_nome, cl_rg, cl_cpf, cl_tel, cl_end) " +
     	"VALUES('"+nome+"','"+rg+"','"+cpf+"','"+tel+"','"+end+"')";
  
	              try {
			int vs = select.executeUpdate(query);
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			 if (query == null){
	        	  System.out.println("query vazio");
	          }else{
	        	  System.out.println("query cheio");
	          }
	       			
	          }
	     
              
          }

e aqui está o erro:

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

at cadastro$BtnCadClActionListener.actionPerformed(cadastro.java:597)

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

Conto com o apoio de vocês

marcelo.bellissimo

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at cadastro$BtnCadClActionListener.actionPerformed(cadastro.java:597)

Mostre pra gente qual é exatamente a linha 597 dessa classe… com certeza um desses componentes está nulo, e você tenta dar um .getText() nele, daí a excessão…

fabio_kaspar

Agora eu reduzi um pouco o código pra facilitar a compreensão. Segue abaixo o código:

import java.awt.BorderLayout;
public class cadastro extends  JFrame {

    static Connection conn =null;
	 static ResultSet rs =null;
    static String status = null;
	private JPanel pnlCentro;
	private JPanel pnlNorte;
	private JPanel pnlSul;
	private JButton btnAdicionar;
	private JButton btnAlterar;
	private JButton btnCadProd;
	private static JButton  btnCadCl;
	private JButton btnExcluir;
	private JButton btnAnt;
	private JButton btnProx;
	private JButton btnAvanc;
	private JButton btnCancel;
	private JLabel lblCodProd;
	private JLabel lblDescProd;
	private JLabel lblTypProd;
	private JLabel lblPrcProd;
	private JLabel lblNmCl;
	private JLabel lblRgCl;
	private JLabel lblCpfCl;
	private JLabel lblTelCl;
	private JLabel lblEndCl;
	private JTextField txtCodProd;
	private JTextField txtDescProd;
	private JTextField txtTypProd;
	private JTextField txtPrcProd;
	private static JTextField txtNmCl;
	private static JTextField txtRgCl;
	private static JTextField txtCpfCl;
	private static JTextField txtTelCl;
	private static JTextField txtEndCl;
    private JLabel lblRot1;
    private JLabel lblRot2;
	private Object request;



public static void main (String args[]){
	cadastro frame = new cadastro ();
	frame.setVisible(true);


}



public cadastro(){
	super();
	setBounds(500,500,728,500);
	setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
	try {
	jbInit();
    teste();
    
   } catch (Throwable e) {
	JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
  }
}
        	


private void jbInit() throws Exception{
	pnlCentro = new JPanel();
	pnlNorte = new JPanel();
	pnlSul = new JPanel();
	btnAlterar = new JButton();
	btnCadProd =new JButton();
	btnCadCl = new JButton();
	btnExcluir =new JButton();
	btnAdicionar = new JButton();
	btnAnt = new JButton();
	btnProx = new JButton();
	btnCancel = new JButton();
	btnAvanc = new JButton();
	lblCodProd = new JLabel();
	lblDescProd = new JLabel();
	lblTypProd = new JLabel();
	lblPrcProd = new JLabel();
	lblNmCl= new JLabel();
	lblRgCl= new JLabel();
	lblCpfCl= new JLabel();
	lblTelCl= new JLabel();
	lblEndCl = new JLabel();
	txtCodProd = new JTextField();
	txtDescProd = new JTextField();
	txtTypProd = new JTextField();
	txtPrcProd = new JTextField();
	txtNmCl = new JTextField();
	txtRgCl = new JTextField();
	txtCpfCl = new JTextField();
	txtTelCl = new JTextField();
	txtEndCl = new JTextField();
	lblRot1 = new JLabel();
	lblRot2 = new JLabel();

	
	getContentPane().setLayout (new BorderLayout());
	setTitle("Assistente 5 estrelas");

	getContentPane().add(pnlCentro, BorderLayout.CENTER);
	pnlCentro.setLayout(null);
	//produto
	pnlCentro.add(lblCodProd);
	lblCodProd.setText("Código");
	lblCodProd.setBounds(20, 50, 66, 16);

	pnlCentro.add(lblDescProd);
	lblDescProd.setText("Descrição");
	lblDescProd.setBounds(20, 100, 66, 16);
	

	pnlCentro.add(lblTypProd);
	lblTypProd.setText("Tipo");
	lblTypProd.setBounds(20, 150, 66, 16);
	

	pnlCentro.add(lblPrcProd);
	lblPrcProd.setText("Preço");
	lblPrcProd.setBounds(20, 200, 66, 16);
	
	pnlCentro.add(txtCodProd);
	txtCodProd.setBounds(80, 50, 200, 20);
	txtCodProd.setText("");
	
	pnlCentro.add(txtDescProd);
	txtDescProd.setBounds(80, 100,200, 20);
	txtDescProd.setText("");
	
	pnlCentro.add(txtTypProd);
	txtTypProd.setBounds(80, 150, 200, 20);
	txtTypProd.setText("");
	
	pnlCentro.add(txtPrcProd);
	txtPrcProd.setBounds(80, 200, 200, 20);
	txtPrcProd.setText("");
    //cliente
	pnlCentro.add(lblNmCl);
	lblNmCl.setText("Nome");
	lblNmCl.setBounds(360, 50, 66, 16);
	

	pnlCentro.add(lblRgCl);
	lblRgCl.setText("RG");
	lblRgCl.setBounds(360, 100, 66, 16);
	

	pnlCentro.add(lblCpfCl);
	lblCpfCl.setText("CPF ");
	lblCpfCl.setBounds(360, 150, 66, 16);
	
	

	pnlCentro.add(lblTelCl);
	lblTelCl.setText("Telefone");
	lblTelCl.setBounds(360, 200, 66, 16);
	
	
    pnlCentro.add(lblEndCl);
	lblEndCl.setText("Endereço");
	lblEndCl.setBounds(360, 250, 66, 16);
	
	
	
	pnlCentro.add(txtNmCl);
	txtNmCl.setBounds(400, 50, 200, 20);
	txtNmCl.setText("");

	
	pnlCentro.add(txtRgCl);
	txtRgCl.setBounds(400, 100, 200, 20);
	txtRgCl.setText("");
	
	
	pnlCentro.add(txtCpfCl);
	txtCpfCl.setBounds(400, 150, 200, 20);
	txtCpfCl.setText("");

	
	
	pnlCentro.add(txtTelCl);
	txtTelCl.setBounds(430, 200, 200, 20);
	txtTelCl.setText("");

	
	pnlCentro.add(txtEndCl);
	txtEndCl.setBounds(430, 250, 200, 20);
	txtEndCl.setText("");
	
	
	getContentPane().add(pnlNorte, BorderLayout.NORTH);
	pnlNorte.setPreferredSize(new Dimension(0, 50));

	
	pnlNorte.add(btnExcluir);
	btnExcluir.setText("excluir");
	btnExcluir.setBounds(241, 10, 115, 25);
	btnExcluir.setIcon (new ImageIcon ("lixeira.png"));

	
	pnlNorte.add(btnAnt);
	btnAnt.setBounds(241, 10, 115, 25);
	btnAnt.setIcon (new ImageIcon ("ant1.png"));

	
	pnlNorte.add(btnProx);
	btnProx.setBounds(241, 10, 115, 25);
	btnProx.setIcon(new ImageIcon("prox.png"));

	
	pnlNorte.add(btnCancel);
	btnCancel.setBounds(241, 10, 115, 25);
	btnCancel.setIcon(new ImageIcon("cancel.png"));
	btnCancel.setText("cancelar");


	
	pnlNorte.add(btnAlterar);
	btnAlterar.setBounds(241, 10, 115, 25);
	btnAlterar.setText("Alterar");


	pnlNorte.add(btnAdicionar);
	btnAdicionar.setBounds(241, 10, 115, 25);
	btnAdicionar.setText("Adicionar");

	
	getContentPane().add(pnlSul, BorderLayout.SOUTH);
	pnlSul.setPreferredSize(new Dimension(400, 50));
	
	
	pnlSul.add(btnCadProd);
	btnCadProd.setText("cadastrar produto");
	btnCadProd.setBounds(20, 50, 115, 25);

	pnlSul.add(btnCadCl);
	btnCadCl.setText("cadastrar cliente");
	btnCadCl.setBounds(5, 30, 115, 25);
	btnCadCl.addActionListener(new BtnCadClActionListener());

	pnlSul.add(btnAvanc);
	btnAvanc.setText("avançar");
	btnAvanc.setBounds(40, 30, 115, 25);


	}

public static Connection getConnection(){
    // base de dados é "javabd2"
    String url = "jdbc:mysql://127.0.0.1/javabd2";
    String usuario = "root";
    String senha = null;

    try{
      Class.forName("com.mysql.jdbc.Driver");
      Connection conn = DriverManager.getConnection(url, usuario, senha);
      java.sql.Statement select = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
      ResultSet rs = select.executeQuery("SELECT * FROM cliente"); 
      if (rs == null){
    	  System.out.println("rs está nulo");
      }else{
    	  System.out.println("rs está cheio"); 
      }
      		if (rs.next()){
      	System.out.println(" há dados");
      	
      } else{
      	System.out.println("não há dados");
      }
      	return conn;
    }
    
    catch(SQLException ex){
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
      return null;
    }
    catch(Exception e){
      System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
      return null; 
    }
  }

     public void teste(){
	cadastro.getConnection();
	System.out.println("conexão aberta");
  }
     
     private static class BtnCadClActionListener implements ActionListener {
    		String nome = null;
    	 	  String rg = null;
    	 	  String cpf = null;
    	 	  String tel = null;
    	 	  String end = null;
    	 	 String query = null;
             static PreparedStatement select = null;
       public void actionPerformed(ActionEvent e) {

    	      nome = txtNmCl.getText();
        	  rg = txtRgCl.getText();
              cpf = txtCpfCl.getText();
              tel = txtTelCl.getText();
              end = txtEndCl.getText();
              query = "INSERT INTO cliente (cl_nome, cl_rg, cl_cpf, cl_tel, cl_end) " +
     	"VALUES('"+nome+"','"+rg+"','"+cpf+"','"+tel+"','"+end+"')";
  
	              try {
			int vs = select.executeUpdate(query);
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			 if (query == null){
	        	  System.out.println("query vazio");
	          }else{
	        	  System.out.println("query cheio");
	          }
	       			
	         }
	     
           }
       }
Segue abaixo o erro:

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

at cadastro$BtnCadClActionListener.actionPerformed(cadastro.java:334)

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

Desde já agradeço

marcelo.bellissimo

Novamente, leia o stackTrace… esse trecho aqui:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at cadastro$BtnCadClActionListener.actionPerformed(cadastro.java:334)

Viu a linha acima? Está claramente dizendo que o erro está na linha 334 do seu código, no método actionPerformed …

Basta ler atentamente o stackTrace gerado, que você já consegue identificar a causa do problema… agora, porque esse componente está retornando null é uma outra história… primeiro identifique qual é, depois podemos ver a causa do nullPointer…

D
this.login = (LoginHandler)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("login");

Esse código tinha que estar dentro do método pesquisarNotas, não dentro do construtor.

fabio_kaspar

A linha que está dando erro é essa:

int vs = select.executeUpdate(query);

Eu não sei onde exatamente se encontra o erro, mas eu sei que ele não está executando o método actionPerformed e então cai no catch e está retornando nulo.
O que eu poderia fazer para corrigir o erro?

Desde já agradeço.

fabio_kaspar

Talvez seja porque eu não instanciei algum objeto?

Criado 22 de abril de 2010
Ultima resposta 16 de jul. de 2010
Respostas 17
Participantes 7