Erro com NullPointerException

5 respostas
Ewerton_Muniz
package projetoescalonador;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Ewerton Muniz
 */
public class Processo {
    /**
     * A variavel num e usada para o ComboBox da Tela Principal
     * Usada na as prioridades do processo
     */
    int[] num = {0,1,2};
    
    /**
     * PID  do Processo
     * Identidade do processo
     */
    public int[][] pid;
    
    /**
     * Nome do Processo
     */
    
    public String[][] nome;  
    /**
     * Prioridade do Processo
     * Existe uma escala para se definir a prioridade
     * a escala está dentre 0 à 2.
     */
    public String[][] prioridade;
   
    public boolean identificadorFilho = false;
    
    /**
     * Variaveis de controle
     */
    public int indicePai = 0;
    public int indiceFilho = 0;
    private int indiceGet = 0;
    
    /**
     * Tamanho do Array
     */
    private final static int tamCache = 100;
    
    [color=red]public Processo() {
       pid = new int[tamCache][tamCache];
       nome = new String[tamCache][tamCache];
       prioridade = new String[tamCache][tamCache];
    }
   [/color]
     public Processo( String nomex, String prioridadex, boolean idFilho){
       
        if (idFilho == false){          
            indiceFilho = 0;
            this.pid[indicePai][indiceFilho] += 100;
            this.nome[indicePai][indiceFilho] = nomex;
            this.prioridade[indicePai][indiceFilho] =  prioridadex;
            indicePai++;
        }else{
            this.pid[indicePai][indiceFilho]++;
            this.nome[indicePai][indiceFilho] = nomex;
            this.prioridade[indicePai][indiceFilho] =  prioridadex;
            indiceFilho = indiceFilho + 1;
        }
    } 
  
}
Erro que da dando.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at projetoescalonador.Processo.<init>(Processo.java:61)
        at projetoescalonador.ProjetoEscalonadorView.CriaProcessoButtonActionPerformed(ProjetoEscalonadorView.java:523)
        at projetoescalonador.ProjetoEscalonadorView.access$900(ProjetoEscalonadorView.java:22)
        at projetoescalonador.ProjetoEscalonadorView$5.actionPerformed(ProjetoEscalonadorView.java:197)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6038)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
        at java.awt.Component.processEvent(Component.java:5803)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Eu tive o mesmo problema a pouco tempo e descobrir que foi pq eu não tinha inicializados o array. Mais agora eu inicializei, quer dizer isso que está de vermelho está certo ou tem que fazer de outra maneira?

5 Respostas

peczenyj

vc está pegando o indice -1 de uma matriz.

normalmente as matrizes começam em 0… :wink:

outra coisa, o operador igualdade em java é ==, não =

se vc fizer

if (variavel = false) {

isso não é bem o que vc espera.

poderias fazer

if (!variavel)

Ewerton_Muniz

Fiz uns modificações no codigo e ainda ta apresentando os mesmo defeito.

peczenyj

vejamos

pid, nome e prioridade são seus atributos de classe, certo?

vc seta eles aonde ? aonde são inicializados ?

Outra coisa, isso :

public Processo( String nomex, String prioridadex, boolean idFilho){

tem cara de método, mas vc criou uma assinatura de construtor. vc realmente quer criar um novo objeto dessa maneira ? pensa bem…

quer ver uma coisa? antes de usar o this.pid faça isso

if (this.pid == null) { System.out.println("AHA! eu sou nulo, uma fonte de problemas!"); }else { System.out.println("o valor atual de this.pid[indicePai][indiceFilho] eh: " + this.pid[indicePai][indiceFilho]); }

IMHO, esse construtor deveria ser um método, algo como public void processar, sei la…

[]´s T

R

Kra, tirando as coisas q o amigo peczenyj falou, o erro está acontecendo pelo seguinte:

vc criou 2 construtores para a classe Processo.

O construtor padrão, sem parâmetros, inicializa a variável pid.

Vc está chamando o construtor que usa a variável pid, e não a que instancia. Então dará nullpointerexception porque a variavel pid é nula…

Flw

rolemberg

Cara, dá uma olhada nesta classe: CriaProcessoButtonActionPerformed…tem algum erro nela!!! tenta dar um debug para identificar o erro.

Criado 9 de dezembro de 2007
Ultima resposta 10 de dez. de 2007
Respostas 5
Participantes 4