NullPointerException [Resolvido]

19 respostas
gp7junior

Alguem sabe o que acontece quando o java mostra o erro abaixo?
Eu sei que deve ser algo a ver com NullPointer.

se precisarem do código fonte. tambem posto.

19 Respostas

erickcellani

codigo!

mchiareli

vc ta tentando acessar uma variavel sem valor , (null - não inicializada, um string nula por exemplo…, não vazia “” - nula msm).

posta o código ae para ver onde ta o erro neh… :roll:

gp7junior
fabiozoroastro

Junior.
Posta somente o pedaço do seu cógido aí que gera o erro.
mas basicamente, vc está fazendo:

Object b = null;
b.toString(); // null.toString(); == NULLPOINTER EXCEPTION.
gp7junior

fabiozoroastro:
Junior.
Posta somente o pedaço do seu cógido aí que gera o erro.
mas basicamente, vc está fazendo:

Object b = null; b.toString(); // null.toString(); == NULLPOINTER EXCEPTION.

public Cliente(String string) {
        try{
        this.codigo = string.substring(0,46);
        this.nome = string.substring(46,174);
        this.endereco = string.substring(174,229);
        this.cep = string.substring(229,257);
        this.camposFinais = string.substring(257);
        this.todosOsCampos = string;
        }catch(Exception e){
            e.printStackTrace();
        }

public void normalizar(Leitor leitor, Escritor escritor){ Cliente cliente = new Cliente(leitor.ler()); do{ cliente = executarAlteracoes(cliente); escritor.escrever(cliente.getTodosOsCampos()); cliente = null; cliente = new Cliente(leitor.ler()); }while(cliente != null); }

if(e.getSource() == generateButton){ if (this.arquivoLido != null){ Manipuladores manipulador = new Manipuladores(); Escritor escritor = new Escritor("midaret"+arquivosGerados+".txt"); //Escritor report = new Escritor ("midaReport"+arquivosGerados+".txt"); manipulador.normalizar(arquivoLido, escritor); log.append(escritor.fileName+" Gerado com sucesso\n"); //log.append(report.fileName+" Gerado com sucesso\n"); this.arquivoLido = null; escritor.fecha(); //report.fecha(); //manipulador = null; //escritor = null; //report = null; }

bem, pelo menos eh o que dizem as ters primeiras linhas do erro.

fabiozoroastro

Junior,
você precisa debugar o seu código pra chegar exatamente na linha que está ocorrendo o erro.
Debuga aew e se mesmo assim vc não solucionar o problema, posta de novo.

Abraço.

gp7junior

fabiozoroastro:
Junior,
você precisa debugar o seu código pra chegar exatamente na linha que está ocorrendo o erro.
Debuga aew e se mesmo assim vc não solucionar o problema, posta de novo.

Abraço.

vou faze-lo.

gp7junior

provavelmente ele não esta criando o objeto Cliente.

Luiz_Aguiar

Cliente.java:29

qual é a linha 29 dessa classe?
mas coloca umas linhas antes tbm pra dar pra entender o que ta chegando nessa linha…

A

Olá gp7junior.

Pelo stackTrace que voce mandou:

java.lang.NullPointerException
         at corretor.Cliente.<init>(Cliente.java:29)
         at corretor.Manipuladores.normalizar(Manipuladores.java:50)

da para ver que o erro está ocorrendo no construtor da classe cliente:

public Cliente(String string) {
         try{
         this.codigo = string.substring(0,46);
         this.nome = string.substring(46,174);
         this.endereco = string.substring(174,229);
         this.cep = string.substring(229,257);
         this.camposFinais = string.substring(257);
         this.todosOsCampos = string;
         }catch(Exception e){
             e.printStackTrace();
         }
    }

se este for o unico construtor da classe cliente então o problema é que voce esta passando uma String nula no argumento do construtor.

pelo que voce passou do código:

public void normalizar(Leitor leitor, Escritor escritor){
 		Cliente cliente = new Cliente(leitor.ler());
 		do{		
                     cliente = executarAlteracoes(cliente);
                     escritor.escrever(cliente.getTodosOsCampos());
                     cliente = null;
                     cliente = new Cliente(leitor.ler());
 		}while(cliente != null);
 	}

provavelmente o leitor.ler() não está retornando coisa alguma;

gp7junior

AndrewAguiar:
Olá gp7junior.

Pelo stackTrace que voce mandou:

provavelmente o leitor.ler() não está retornando coisa alguma;

sim ele esta. eu testei com o System.out.println(); ele retorna todos os dados.

gp7junior

Luiz Aguiar:
Cliente.java:29

qual é a linha 29 dessa classe?
mas coloca umas linhas antes tbm pra dar pra entender o que ta chegando nessa linha…

29 this.codigo = string.substring(0,46);

leonardom

Com certeza em algum momento sua variável “string” tá ficando nula.

Tenta colocar um if antes de criar o objeto cliente para certificar que não vai passar null para o construtor.

adriano.ferranti

Marca um breakpoint na linha 29 e vê o valor de:

string.substring(0,46)
gp7junior

adriano.ferranti:
Marca um breakpoint na linha 29 e vê o valor de:

string.substring(0,46)

vejam, Imagens do depurador:




gp7junior
Descobri que o erro se encontra no método:
public void normalizarX(Leitor leitor, Escritor escritor){
		Cliente cliente = new Cliente(leitor.ler());
		do{		
                    cliente = executarAlteracoes(cliente);
                    escritor.escrever(cliente.getTodosOsCampos());
                    cliente = null;
                    cliente = new Cliente(leitor.ler());
		}while(cliente != null);
	}

substitui por:

public void normalizar(Leitor leitor, Escritor escritor){
		String str = leitor.ler();
                //Cliente cli = new Cliente(str);
		do{			
			str = executarAlteracoes(str);
			escritor.escrever(str);
			str = leitor.ler();
		}while(leitor.ler() != null);
	}

e não mostrou mais as mensagens de erro.

adriano.ferranti

Veja bem, nessa execução onde você está depurando, o erro não ocorreu, você está fazendo esse processo mais de uma vez, como por exemplo lendo o conteúdo de um arquivo? Pode ser que nessa linha o processo esteja ok, mas nas próximas tenha dados inválidos no arquivo. O ideal seria que você conseguisse debugar exatamente onde está ocorrendo o erro, pois nesse exemplo você passou pela linha 29 sem problemas.

Luiz_Aguiar

Se já estiver mesmo resolvido o problema, edite o título do post fazendo favor amigo.

valeu!

andredeividi

public Cliente(String string) { try{ this.codigo = string.substring(0,46); this.nome = string.substring(46,174); this.endereco = string.substring(174,229); this.cep = string.substring(229,257); this.camposFinais = string.substring(257); this.todosOsCampos = string; }catch(Exception e){ e.printStackTrace(); } }

Acredito que sua String não tenhas as posições para o substring.
abraço

Criado 15 de maio de 2007
Ultima resposta 15 de mai. de 2007
Respostas 19
Participantes 9