Java.lang.NullPointerException

31 respostas
M

É esta mensagem que dá, depois que tentei inserir um dado do tipo Data?

31 Respostas

P

Kra,

Manda o teu código para o forum, se fica dificil de te orientar, este tipo de execção é porque o teu objeto não recebeu valor algum, ou seja, está nulo.

Atenciosamente,
Paulo

S

java.lang.NullPointerException significa q vc estah apontando para um objeto que não existe, ou o caminho estah incorreto.

K

Shelson:
java.lang.NullPointerException significa q vc estah apontando para um objeto que não existe, ou o caminho estah incorreto.
Quando você tenta chamar um método de uma variavel de referencia que está setada como nula (variavel = null;).
Exemplo:

String nome = null;
nome.toString(); // <=== Aqui dá NullPointerException!!
M

Estou utilizando preparedStatement. Utilizei setDate, setObject, mas o resultado é nulo!!!

String value = ftfDataNasc.getText(); //campo formatado ("##/##/####)
Date dateNasce = new SimpleDateFormat("dd/mm/yyyy").parse(value);
....
prepara.setObject(3, new Date (dateNasce.getTime()));
F

todo programador merece um puxao de orelha pra cada NullPointerException lancado. :twisted:

1

Minha orelha começou a sangrar…

K

pauloperes:
Kra,

Manda o teu código para o forum, se fica dificil de te orientar, este tipo de execção é porque o teu objeto não recebeu valor algum, ou seja, está nulo.

Atenciosamente,
Paulo

Valor algum é diferente de ser nulo!

public void metodo(){
String nome;
String sobrenome =  null;
System.out.println("Sobrenome:" + sobrenome); // Funciona!
System.out.println("Nome:" + nome); // Erro de compilação. A variavel não foi inicializada!!
}
K

manda ai a descrição da exception!

K

SimpleDateFormat

K
mrsmylle:
Estou utilizando preparedStatement. Utilizei setDate, setObject, mas o resultado é nulo!!!
String value = ftfDataNasc.getText(); //campo formatado ("##/##/####)
Date dateNasce = new SimpleDateFormat("dd/mm/yyyy").parse(value);
....
prepara.setObject(3, new Date (dateNasce.getTime()));
Olha o case sensitive!!
Date dateNasce = new SimpleDateFormat("dd/MM/yyyy").parse(value);
o mm tem que ser em maiúsculo, senão a formatação "pensa" que o mm é minutos!
M
Olha o meu bloc ai!
try{
			
			String value = ftfDataNasc.getText();
			Date dateNasce = new SimpleDateFormat("dd/mm/yyyy").parse(value);
			
			//txtRes.setText ("");
			PreparedStatement prepara = con.prepareStatement ("insert into aluno (ra, nome, datatual) values (?, ?,?);");
			prepara.setString(1, txtRa.getText());
			prepara.setString(2, txtNome.getText());
			prepara.setObject(3, new Date (dateNasce.getTime()));
			prepara.executeUpdate();
			txtRes.setText("Cadastro Efetuado");
			txtRa.setText("");
			txtNome.setText("");
		}
	    catch (SQLException ex)
	    {
			System.out.println (ex);
	    }
		catch (Exception exc) {System.out.println (exc);}
S

kina:
Shelson:
java.lang.NullPointerException significa q vc estah apontando para um objeto que não existe, ou o caminho estah incorreto.
Quando você tenta chamar um método de uma variavel de referencia que está setada como nula (variavel = null;).
Exemplo:

String nome = null; nome.toString(); // <=== Aqui dá NullPointerException!!

Material oficial da Sun

Class NullPointerException

Traduzindo :

Thrown quando a aplicação tenta acessar um um objeto que estaha referenciado como null. Iso pode incluir:

  • Chamando a instancia do metodo de num objeto null.
  • Acessando ou modificando um campo de um objeto null.
  • Requerendo o tamamho de um valor null que estah num array.
  • Acessando ou modificando o índice que estah nulll de um array.
  • Enviando nulo como tem um valor que pode dar erro(Throwable value)
M

Deu certo aqui, eu apenas apaguei uma declaração desnecssária
public class…
JTextField ftfDataNasc;

public …(){

JTextField ftfDataNasc = new… //eu apenas exclui esta declaracao TextField!!
}
valeu pessoal! Achei o nullpoint!!

F

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Not writable: /home/abrhpb/public_html/anexos/noticia/

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.IllegalArgumentException: Not writable: /home/abrhpb/public_html/anexos/noticia/

com.oreilly.servlet.MultipartRequest.(MultipartRequest.java:218)

com.oreilly.servlet.MultipartRequest.(MultipartRequest.java:109)

org.apache.jsp.gerenciador.upload.add_005ffoto_jsp._jspService(org.apache.jsp.gerenciador.upload.add_005ffoto_jsp:87)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

e no código ao adicionar ta assim

//colunista.setDescricao(getParametro(“texto”, null));

e quando vai recuperar que é quando da o erro ta assim

//<%=colunista.getDescricao()%>

V

[color=darkred]Oi pessoal…
Bom…eu estou montando um projeto em Java, utilizando o Jcreator
Estou fazendo conexão com o Banco de dados, porém ao executar o programa e clicar no botão para gravar o registro no banco, no prompt aparecem várias instruções, e a primeira delas é essa:

java.lang.nullpointerexception

mas ainda existem umas 20 linhas com diversos “erros”
não sei o que fazer para resolver o problema, pois já revisei o programa várias vezes, e não acho o erro!
Quem puder ajudar…ficaria imensamente grata
:slight_smile:

Segue o código do programa:
[/color]
[color=black]

import java.sql.<em>;

import javax.swing.</em>;

import java.awt.<em>;

import java.awt.event.</em>;

public class buscanome extends JFrame implements ActionListener
{

JLabel L1,L2;

JButton btpesquisar, btcancelar;

static JTextField tfNome;

String nome;

JPanel painel1 = new JPanel();

ResultSet rs;

Statement MeuState;

Connection MinhaConexao;

boolean status;
public static void main(String args[])

{

JFrame Janela = new buscanome();

Janela.show();

WindowListener x = new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

};

Janela.addWindowListener(x);

}
buscanome()

{

painel1.setLayout(new FlowLayout(FlowLayout.LEFT));

L1 = new JLabel("Você selecionou a opção de identificação por nome.Por Favor: ");

L2 = new JLabel(“Digite o nome para pesquisar.”);
tfNome = new JTextField(50);

nome = tfNome.getText();

btpesquisar=new JButton(“Pesquisar”);

btcancelar=new JButton(“Cancelar Operação”);

btpesquisar.setBackground(new Color(180,180,250));
btcancelar.setBackground(new Color(180,180,250));

btpesquisar.addActionListener(this);
btcancelar.addActionListener(this);

painel1.add(L1);               painel1.add(tfNome);
painel1.add(L2);                
painel1.add(btpesquisar);         painel1.add(btcancelar);
getContentPane().add(painel1);

setTitle(Busca por Nome);

setSize(600,140);

setResizable(false);

String url = jdbc:odbc:MeuBanco;
try

{

Class.forName( sun.jdbc.odbc.JdbcOdbcDriver );

MinhaConexao = DriverManager.getConnection(url);

}

catch(ClassNotFoundException erro)

{

System.out.println(Driver JDBC-ODBC nao encontrado!);

return;

}

catch(SQLException erro)

{

System.out.println(Problema na Conexao com fonte de dados);

return;

}}
public void actionPerformed(ActionEvent e)

{

if(e.getSource()==btpesquisar)

{

try

{
//MeuState = MinhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
			
			String sql = "select * nome from Pacientes 	where nome = '" + nome + "'";
			tfNome.getText();
			rs = MeuState.executeQuery(sql);
			rs.next();
			nome = rs.getString("nome");
			
			String sql2="Insert into Resultado(resulnome) Values (sql)";
				MeuState.executeUpdate(sql2); 
			JOptionPane.showMessageDialog(null, "Gravação Realizada com  sucesso!");

			}
		catch(SQLException erro) {		}

}} }

[/color]

A
public void insereProduto(Produto pr){

ResultSet rs=null;//OBJETO QUE  RETORNA  TODOS  OS  DADOS e como se  fosse uma tabela na minah classe  java

String sql=insert into produto(nome,fornecedor,preco,qtde) values (?,?,?,?);

Connection cnx;//Cria um objeto com todos os dados para conexao

try{

Class.forName(com.mysql.jdbc.Driver);//passa  a string de  qual banco de  dados  sera  usado

//ABRE A CONXAO COM O BANCO DE  DADOS COM A VARIAVEL CNX

cnx=DriverManager.getConnection(jdbc:mysql://localhost/sistema”,“root”,“root”);//aponta para qual servidor  ele vai achar

rs.first();

PreparedStatement stm=cnx.prepareStatement(sql);//PREPARA  PARA PASSAR  TODA  A STRING  SQL PARA O  BANCO

stm.setString(1,pr.getNome());

stm.setString(2,pr.getFornecedor());

stm.setDouble(3,pr.getPreco());

stm.setDouble(4,pr.getQtde());

stm.executeUpdate();

stm.executeQuery(); //EXECUTA  A STRING SQL

cnx.close();// FECHA  A CONEXAO  COM O  BANCO DE  DADOS

}

//E  TRATADO  UMA EXPEITION OU ALGUM ERRO CASO  HAJA

catch(Exception e){

System.out.println(e.toString());

}
}

pessoal não consigo conectar está dado o mesmo erro
gerando um exeption.nullpointer.

S

Pessoal estou com um probleminha no site da Brasil Telecom:
500 Internal Server Error
java.lang.NullPointerException at org.apache.struts.action.ActionServlet.getProcessorForModule(ActionServlet.java:639) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1907) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:782) at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330) at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:794) at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:208) at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:125) at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192) at java.lang.Thread.run(Thread.java:534)

Só que um dia o site funcionou… e depois não mais!!!
Alguém pode me ajudar???
Obrigada :lol:

T

Boas a todos, também estou com o erro NullPointerException quando executo a função acrescentaLivro nomeadamente aqui, já tentei tirar o this.livros = null; mas acontece-me o mesmo.

Alguma ajuda

public class Biblioteca {

private Vector  livros;

private String nome;
public Biblioteca(String nome){
this.nome = nome;
    this.livros = null;
}

public void acrescentaLivro(String titulo, String autor){
Livro novo = new Livro(titulo, autor); //cria o registo
livros.add(novo);//acrescenta-o á bilbioteca

}
F

Amigos, muito obrigado pela ajuda de vocês, eu tive o mesmo erro de java.lang.NullPointerException no eclipse 3.5.2 ve 1.4.0
O meu problema foi devido a uma veriável local, eu comentei, e ai voltou a funcionar.

R
Também estou com esse erro; meu código é esse:
try {
            Empresa emp = new Empresa();
            emp.setRazao_social(txtrazao_social.getText());
            emp.setNome_fantasia(txtnome_fantasia.getText());
            emp.setCnpj(txtcnpj.getText());
            emp.setInsc_estadual(txtIncrEstadual.getText());
            emp.setInsc_municipal(txtInscMunicipal.getText());
            emp.setEndereco_emp(txtEndereco.getText());
            emp.setComplemento_emp(txtComplemento.getText());
            emp.setBairro_emp(txtxbairro.getText());
            emp.setCidade_emp(txtcidade.getText());
            emp.setCep_emp(txtcep.getText());
            emp.setTelefone_emp(txttelefone.getText());
            emp.setFax_emp(txtfax.getText());
            emp.setEmail_emp(txtemail.getText());
            emp.setQuant_empregados_emp(Integer.parseInt(txtempregados.getText()));
            emp.setSite_emp(txtsite.getText());
            emp.setFundacao(txtfundacao.getText());
            emp.setCapital_social(Integer.parseInt(txtcapitalsocial.getText()));
            
            dao.adicionarEmpresa(emp);
            setVisible(false);
        frmCadastro_Socio dialog = new frmCadastro_Socio(new javax.swing.JFrame(), true, null);
        dialog.setVisible(true);
        } catch (Exception ex) {
            ex.printStackTrace();
            Logger.getLogger(frmCadastro_Empresa.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(this, "Erro adicionando empresa. " + ex, "Error",
                    JOptionPane.ERROR_MESSAGE);
        }
              
    }

Quando executa ele cai no catch e dá o erro java.lang.NullPointerException

A

Esse tópico é um fenômeno de visitas… Deve ser 99% via google.

R

O pior é um post antigo e sem uma solução rsrsrs , na criação das entity estava colocando no campo do Id assim private Integer id , e mandando criar os equals e hashCode , mas o correto é private Int id , e mandar criar os equals e hashCode .

P

tambem estou com um probleminha com o java.lang.NullPointerException

estou tentando filtrar dados do Banco de datos e gerar o relatorio em um tabela. Quando começo a digitar no campo de pesquisa surge a menssagem java.lang.NullPointerException

Codigo na Classe:

public ResultSet RelatorioVeiculos(String modeloVeiculo){
            
            conn.Conectar();
            ResultSet rs;

            String consulta = "SELECT * FROM veiculo WHERE modeloVeiculo ILIKE '%"+modeloVeiculo+"%'";
            conn.Consultar(consulta);
            rs = conn.ResultSet;

            return rs;

        }

Codigo no formulario:

public void PreencherTabela(String modeloVeiculo){
	ClasseVeiculo relatorio = new ClasseVeiculo();
	ResultSet rs;

	rs = relatorio.RelatorioVeiculos(modeloVeiculo);

	DefaultTableModel tabelaVeiculo = (DefaultTableModel) tblRelatVeiculo.getModel();//declara uma variavel do tipo DTM e recebe os dados do modelo
        //tblRelatVeiculo.setNumRows(0);

        try{
            while(rs.next()){
                    tabelaVeiculo.addRow(new Object[]{rs.getString("codVeiculo"), rs.getString("modeloVeiculo"), rs.getString("anoVeiculo"),rs.getString("marcaVeiculo"),rs.getString("placaVeiculo"),rs.getString("tipoVeiculo"),rs.getString("lugarVeiculo")});
                }
        }
        catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex);
        }
       }

ação do jtextfield:

private void campoPesquisaVeiculoCaretUpdate(javax.swing.event.CaretEvent evt) {                                                 
        // TODO add your handling code here:
        String modVeiculo = campoPesquisaVeiculo.getText();
        PreencherTabela(modVeiculo);         
    }

Desde já agradeço!!!

Boa tarde!

R

Amigo seu erro se não me engano está sendo porque está dando nullo , ou seja não esta encontrando o campo . faz o seguinte no seu select coloca assim :

“SELECT * FROM veiculo WHERE modeloVeiculo LIKE ?”, modeloVeiculo ;

ai quando chamar o campo pesquisa coloca assim
String modVeiculo = “%”+campoPesquisaVeiculo.getText().trim()"%"; //o trim() tira espaços vazios

se não funcionar desculpa é que estou em um pc que não tenho como testar o código ,

P

RelampagoBR , o seu codigo não funcionou, mas me deu uma ideia e consegui encontrar o erro, e rodar o metodo como eu queria.

coloquei meu metodo assim agora:

Obrigado pela dica! :D

public ResultSet RelatorioVeiculos(String modeloVeiculo){

        conn.Conectar();

        ResultSet rs= null;

        try
        {
            
            rs = conn.Consultar("SELECT * FROM veiculo WHERE modeloVeiculo ILIKE'%"+modeloVeiculo+"%'");

        }
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex);
        }


        conn.Desconectar();
        return rs;


        }
A

Estou com um problema parecido…criei um arquivo chamado produto.java para chamar um relatório do iReport, porém, quando compilo o arquivo aparece o erro java.lang.NullPointerException. Segue o código do arquivo produto.java…
package relatorios;

import java.util.HashMap;

import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import utilitarios.conexao;

public class produtos{

conexao con = new conexao();

public produtos(){

    try {
        con.conecta();
        con.executaSQL("select * from produtos");
        JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
        JasperPrint jasperPrint = JasperFillManager.fillReport("relatorio/produtos.jasper", new HashMap(), jrRS);
        JasperViewer.viewReport(jasperPrint);

    } catch (Exception erro) {
        JOptionPane.showMessageDialog(null, "Deu o erro:" + erro);
    }

}

public static void main(String args[]){

    new produtos();
}

}

O relatório está na pasta que fica em -> C:\Documents and Settings\Anderson\Meus documentos\NetBeansProjects\Estoque\relatorio\produtos.jasper

F
Connection conecta;

PreparedStatement pst;

ResultSet rs;
String url = "jdbc:mysql://localhost/Cad_cliente";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "";



public void abreconexao()
{
    try{
        Class.forName(driver);
    
    conecta = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, user, pass);
    
    pst = (PreparedStatement) conecta.createStatement();
             System.out.println("conectado!");    
    } catch (ClassNotFoundException | SQLException erro){
        System.out.println("Não conectado!");    
    }           
    
}


public cadastro() throws ClassNotFoundException {
    initComponents();
    
    
    
            }

public void cadastraUsuario (){
   String sql = "insert into usuario (nome,senha) values (?, ?)";
   
     
    try {
------------------------------------------------aparece esse erro aqui ----------------------------------

PreparedStatement stmt = conecta.prepareStatement(sql);

//pst = conecta.prepareStatement(“insert into usuario (nome,senha) values (?,?)”);
pst.setString(1,txt_nome.getText());
        pst.setString(2,txt_senha.getText());
        
        pst.execute();
        pst.close();
        System.out.println("Gravado!");
        conecta.close();
        
        JOptionPane.showMessageDialog(null, " inserido");
        
    } catch (SQLException error) {
        JOptionPane.showMessageDialog(null, error);
    }
}
F

alguem pode me ajudar?

J

Crie um tópico novo e ajudaremos você.

A

Crie um tópico novo e ajudaremos você.

De preferência no GUJ - Perguntas

F

ta ai o link:

Criado 12 de agosto de 2005
Ultima resposta 26 de jun. de 2014
Respostas 31
Participantes 20