Java.lang.NullPointerException

Alguém poderia me ajudar??? Está dando esta mensagem:

[color=blue]Exception in thread “main” java.lang.NullPointerException
at pointer_jumping.Pointer_Jumping.run(Pointer_Jumping.java:13)
at pointer_jumping.Tester.main(Tester.java:13)[/color]

Minhas classes são estas:

[code]package pointer_jumping;
class Pointer_Jumping implements Runnable {

private String threadName;
private Arvore arv;

public Pointer_Jumping(String name){
	threadName = name;
}

public void run(){
	for (int i=0; i< arv.parent.length; i++ ){
		while (arv.parent[i] != arv.parent[arv.parent[i]])
			arv.parent[i]= arv.parent[arv.parent[i]];
		arv.imprime(i);
	}
}

}[/code]

[code]package pointer_jumping;

import java.util.Scanner;
public class Arvore {

// Vetor que representa uma árvore.
int parent[];
int num_vertices;

Arvore(int tamanho) {
	parent = new int[tamanho];
	num_vertices = tamanho;
}

public void setParent(){
	for (int i=0; i < parent.length ;i++){
		System.out.println("Diga o vizinho do nó "+i+":");
		Scanner teclado = new Scanner(System.in);
		parent[i]= teclado.nextInt();
	}
}

public void imprime(int no){
	System.out.println("Nó "+no+ " possui vizinho "+parent[no]);
}

}[/code]

[code]package pointer_jumping;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Tester {

public static void main(String[] args) {
	
	Arvore arv = new Arvore(6);
	Pointer_Jumping pj1 = new Pointer_Jumping("thread1");
	pj1.run();
}

}[/code]

o atributo “arv” da classe Pointer_Jumping não esta sendo inicializado antes de sua utilização

NullPointerException - Erro comum em java.

E simples de resolver na grande maioria dos casos

Sempre q der verifique se não existem objetos nulos ou não instanciados no seu código
:wink:

arv.parent

o problema está ai… a variavel de instancia quando nao é do tipo primitivo ela é inicializada com null e vc nao pode usar o operador de . (ponto) com um variavel que referencia para null. Por isso que acontece essa exceção. Você pode fazer o seguinte:

public void run(){   
Arvore arv = new Arvore();
        for (int i=0; i< arv.parent.length; i++ ){   
            while (arv.parent[i] != arv.parent[arv.parent[i]])   
                arv.parent[i]= arv.parent[arv.parent[i]];   
            arv.imprime(i);   
        }   
    }   
  
}  

e na classe Arvore crie um construtor Arvore (){}

é uma das formas de resolver o problema tb…