[RESOLVIDO]o que significa esse erro?

pessoal, esse erro acontece ao executar meu programa

Exception in thread "Thread-3" java.lang.NullPointerException

alguem sabe o que é e como posso resolver???
Obg

Não tinha nenhum stack trace junto dessa mensagem? Nele tem a linha do programa onde ocorreu o erro.

Significa que em algum lugar da sua aplicação voce ta usando um objeto que é nulo.

1 curtida

eh bom vc colocar todo o codigo para identificamos a linha que está com o objeto null :slight_smile:

Mas essa excecao diz que vc usou o . (ponto) em um objeto com o valor NULL

[quote=LPJava]eh bom vc colocar todo o codigo para identificamos a linha que está com o objeto null :slight_smile:

Mas essa excecao diz que vc usou o . (ponto) em um objeto com o valor NULL[/quote]

Se o método ou atributo for static, não tem problema. 8)

[quote=Bruno Laturner][quote=LPJava]eh bom vc colocar todo o codigo para identificamos a linha que está com o objeto null :slight_smile:

Mas essa excecao diz que vc usou o . (ponto) em um objeto com o valor NULL[/quote]

Se o método ou atributo for static, não tem problema. 8) [/quote]

ue claro que nao tem problema, pq o static nem precisa do ponto! ai o caso eh diferente, com static… ele nao chama pela referencia :slight_smile: e sim pelo tipo…

[quote=vinnyparker]pessoal, esse erro acontece ao executar meu programa

Exception in thread "Thread-3" java.lang.NullPointerException

alguem sabe o que é e como posso resolver???
Obg[/quote]

Tentou trabalhar com um objeto que não foi devidamente “criado”, ou seja, ele é nulo. Passe o código e o erro completo para vermos( isso se já não resolveu rs). :twisted: :twisted: :twisted:

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:
Um Grande Abraço!

Linha do console onde mostra o erro:

Exception in thread "Thread-3" java.lang.NullPointerException at br.com.link3.dp.convert.converters.PGConverter.export(PGConverter.java:191) at br.com.link3.dp.convert.converters.PGConverter$1.run(PGConverter.java:63)

linha no codigo 191

final Class<?> hClass = list.get(0).getClass();
linha no codigo 63

            export(module);

Essa lista deve estar vazia e o erro é lançado pelo objeto nulo… ou a lista é nula

Coloque um breakpoint nessa linha.
Rode em modo debug. E veja o valor da lista, e do que é retornado pelo get(0).

Um deles é nulo.

Mas aprenda a usar um depurador!!! Tanto o Netbeans, quanto o Eclipse, tem excelentes depuradores.

Senhores, bom dia,
Ressulcitando o tópico, preciso da ajuda de vocês.
Estou com este mesmo problema a um certo tempo, e não consigo resolver.
Tenho uma aplicacao que roda como tarefa para efetuar atualizações de tabelas em uma base de dados.

Estou usando Thread.

O erro que aparece é esse abaixo, sendo que hora é atualizado tudo perfeitamente e hora aparece este erro abaixo.
Outra coisa estranha é que o erro não da sempre na mesma tabela.

Exception in thread "Thread-3" java.lang.NullPointerException
	at controle.Sc5DAO.alterar(Sc5DAO.java:54)
	at principal.Schedule.Sc5web(Schedule.java:589)
	at principal.Schedule.run(Schedule.java:144)

Erro da linha: 54 da classe Sc5DAO

PreparedStatement stmt = con.prepareStatement(sql);

Erro da linha: 589 da classe Schedule

dao.alterar(sc5);

Erro da linha: 144 da classe Schedule

Sc5web();

Se precisarem de mais informações para tentar a desvendar esse erro comigo é so pedir, pois não sei mais o que fazer.

Obrigado

[quote=leandrooooo]Senhores, bom dia,
Ressulcitando o tópico, preciso da ajuda de vocês.
Estou com este mesmo problema a um certo tempo, e não consigo resolver.
Tenho uma aplicacao que roda como tarefa para efetuar atualizações de tabelas em uma base de dados.

Estou usando Thread.

O erro que aparece é esse abaixo, sendo que hora é atualizado tudo perfeitamente e hora aparece este erro abaixo.
Outra coisa estranha é que o erro não da sempre na mesma tabela.

Exception in thread "Thread-3" java.lang.NullPointerException
	at controle.Sc5DAO.alterar(Sc5DAO.java:54)
	at principal.Schedule.Sc5web(Schedule.java:589)
	at principal.Schedule.run(Schedule.java:144)

Erro da linha: 54 da classe Sc5DAO

PreparedStatement stmt = con.prepareStatement(sql);

Erro da linha: 589 da classe Schedule

dao.alterar(sc5);

Erro da linha: 144 da classe Schedule

Sc5web();

Se precisarem de mais informações para tentar a desvendar esse erro comigo é so pedir, pois não sei mais o que fazer.

Obrigado[/quote]

a sua resposta seria a mesma que foi dada para o cara la em cima, verifique usando o depurador qual variavel esta nula, no seu caso acho que seria ou a con (sua Connection) ou a variavel sql que aparentemente deve ser uma string), linha 54 da classe Sc5DAO.

[quote]
a sua resposta seria a mesma que foi dada para o cara la em cima, verifique usando o depurador qual variavel esta nula, no seu caso acho que seria ou a con (sua Connection) ou a variavel sql que aparentemente deve ser uma string), linha 54 da classe Sc5DAO. [/quote]

Realmente, a minha variavel con do codigo acima está nula.

Me responde um pergunta, (desculpe se a pergunta for ignorante).
Por exemplo, tenho que atualizar uma tabela com 10 mil resgistro.
Essa atualizacao estou fazendo por update ou insert.
Quase 8 mil registro ja foram atualizado para depois ele dar aquele erro de java.lang.NullPointerException.

como e por que isso pode acontecer?

Desde já obrigado.

Como vc inicializa a variável con?

Bom, vou enviar todo meu codigo:

Está é minha classe de conexao com o banco sql server express.

public class Conexao {

	public static String status = "";

	public static Connection getConnection() {

		Connection con = null ;

		try {
			Class.forName("net.sourceforge.jtds.jdbc.Driver");
			con = DriverManager.getConnection"jdbc:jtds:sqlserver://localhost:1433/NOMEBANCO;user=USUARIO;password=SENHA");
			status = "aberta";
		} catch (SQLException e) {
			status = e.getMessage();
		} catch (ClassNotFoundException e) {
			status = e.getMessage();
		} catch (Exception e) {
			status = e.getMessage();
		}
		return con; 
	}
	
}

E abaixo o codigo da minha classe DAO com um dos metodos que criei.

public class Sc5DAO {

	private Connection con;

	public Sc5DAO() throws SQLException {
		this.con = Conexao.getConnection();
	}


public void alterar(Sc5web s5cweb) throws SQLException {

		String sql = " UPDATE SC5WEB010 "+
		" SET " +
		" C5_CLIENTE=?, C5_VEND1=?, C5_PEDACAC=?, C5_EMISSAO=?, " +
		" C5_HORAPD=?, C5_HORAFN=?, D_E_L_E_T_=?, C5_DTRECEP=?, C5_HORAREC=?, " +
		" C5_OCORREN=?, C5_LIBEAPR=?  "+
		" WHERE C5_NUM = ? ";

		PreparedStatement stmt = con.prepareStatement(sql);
		
                                stmt.setString(1,s5cweb.getC5_cliente());
	                stmt.setString(2,s5cweb.getC5_vend1());
		stmt.setString(3,s5cweb.getC5_pedacac());
		stmt.setString(4,s5cweb.getC5_emissao());
		stmt.setString(5,s5cweb.getC5_horapd());
		stmt.setString(6,s5cweb.getC5_forafn());
		stmt.setString(7,s5cweb.getD_e_l_e_t_());
		stmt.setString(8,s5cweb.getC5_dtrecep());
		stmt.setString(9,s5cweb.getC5_horarec());
		stmt.setString(10,s5cweb.getC5_ocorren());
		stmt.setString(11,s5cweb.getC5_libeapr());
		stmt.setString(12,s5cweb.getC5_num());
	
     	                stmt.execute();
		stmt.close();	
	}
}

Att

Uma exception deve estar sendo disparada após várias conexões abertas. Certifique-se que todos os statements estão sendo fechados com stmt.close() e todas as conections também com con.close(). Aparentemente, você não está fechando as conections no seu banco.

Na prática, é uma péssima prática guardar uma exception uma variável de status, e nunca testar o valor dessa variável. É o mesmo que ignorar solenemente as exceptions. Aliás, variáveis de status eram uma prática de linguagens antigas, que não suportavam exceptions adequadamente. No lugar de fazer isso, aprenda a trabalhar corretamente com elas:
http://blog.caelum.com.br/2006/10/07/lidando-com-exceptions/

óia!! ressucitaram meu tópico!!!

Obrigado, vou testar aqui e depois falo no que deu…

:smiley:

ViniGodoy,

Show de Bola, meu problema foi resolvido!
E agora entendi e aprendi a trabalhar com exceptions.

Obrigado!