Resolução de problemas de
Compilação e Runtime
Mario Jorge Pereira
mariojp@gmail.com
Quando Ocorrem?
Durante o desenvolvimento, erros podem ocorrer em
dois momentos:
Na compilação
Esses ocorrem quando se executa o javac e são mais simples
de corrigir
Erros que estão geralmente ligados a sintaxe
Uma boa IDE já aponta o erro e muitas vezes ate mesmo a
solução
Na execução ( runtime )
Esses erros ocorrem quando se executa o java e não são tão
simples de corrigir
Compilando o .java
Nesse momento podem ocorrer 2 tipos de erro:
Erros de processamento do arquivo (parsing)
Os motivos são ponto-e-vírgula faltando, parênteses, aspas,
chaves ou colchetes descasados.
IO compilador identifica apenas o arquivo e a linha onde o erro
pode ter iniciado.
Um erro pode causar vários outros e nem sempre a mensagem
é precisa.
Erros de compilação do código
Realizada depois do parsing.
Além da linha e do arquivo, identificam a classe e método.
Geralmente as mensagens são bem claras.
Erros mais comuns na hora de Compilar
javac : Command not found
A variável PATH não esta corretamente configurada.
Inserir a pasta bin do JDK (onde esta o javac) no PATH.
Cannot resolve symbol
O compilador não encontrou a definição de um determinado
simbolo.
Geralmente são erros de sintaxe ou a definição de classe
não encontrada no CLASSPATH
Class Classe is public, should be declared
in a file named Classe.java
Se o arquivo .java tiver uma classe publica, o nome da
classe e o nome do arquivo devem ser rigorosamente o
mesmo. O mesmo erro aparece caso exista mais de uma
classe publica no arquivo.
Erros mais comuns na hora de Compilar
Erros mais comuns na hora de Compilar
Erros de Runtime
Passando com sucesso a fase de compilação são
gerados os arquivos .class (bytecodes).
Ao ocorrer um erro no momento da execução geralmente
é impresso um "stack trace".
Nem sempre mostra a linha de código onde o erro começou
O início do trace geralmente contém informações mais úteis
Erros de runtime podem ocorrer tambem por causas
externas:
não existência de arquivos externos, falta de memória e
falha em comunicação de rede
Erros mais comuns na hora de Executar
java.lang.NoClassDefFoundError :
NomeClasse
A classe que estamos tentando executar não foi encontrada.
Verifique o nome da classe e a localização
java.lang.NoSuchMethodError: main
A classe que estamos executando não possuí o metodo:
public static void main(String[] args){ ... }
Verifique se a classe tem o metodo e se sua sintaxe esta
correta.
java.lang.ArrayIndexOutOfBoundsException
Tentativa de acessar vetor além do limite definido.
Verifique a logica da aplicação.
Erros mais comuns na hora de Executar
java.lang.NullPointerException
referência para objeto é nula
Variável de tipo objeto ou Vetor foi declarado mas não
inicializado
Verifique a logica da aplicação.
java.lang.NoSuchMethodError: main
A classe que estamos executando não possuí o metodo:
public static void main(String[] args){ ... }
Verifique se a classe tem o metodo e se sua sintaxe esta
correta.
java.lang.ArrayIndexOutOfBoundsException
Tentativa de acessar vetor além do limite definido.
Verifique a logica da aplicação.
Dicas
Devemos criar aplicações que prevejam a possibilidade
de erros devido a fatores externos e ajam da melhor
forma possível
Devemos evitar que erros de lógica sobrevivam além da
fase de desenvolvimento. Para evitá-los:
Escreva código claro, fácil de entender, organizado,
pequeno
Use endentação, siga convenções, nomes significativos,
documente
Escreva testes para todo código e rode-os com freqüência
Para achar os erros difíceis
Rode código de testes se os tiver; Ative nível de
mensagens de log
Aprenda a usar um depurador para navegar no fluxo de
execução

Erros comuns em java

  • 1.
    Resolução de problemasde Compilação e Runtime Mario Jorge Pereira mariojp@gmail.com
  • 2.
    Quando Ocorrem? Durante odesenvolvimento, erros podem ocorrer em dois momentos: Na compilação Esses ocorrem quando se executa o javac e são mais simples de corrigir Erros que estão geralmente ligados a sintaxe Uma boa IDE já aponta o erro e muitas vezes ate mesmo a solução Na execução ( runtime ) Esses erros ocorrem quando se executa o java e não são tão simples de corrigir
  • 3.
    Compilando o .java Nessemomento podem ocorrer 2 tipos de erro: Erros de processamento do arquivo (parsing) Os motivos são ponto-e-vírgula faltando, parênteses, aspas, chaves ou colchetes descasados. IO compilador identifica apenas o arquivo e a linha onde o erro pode ter iniciado. Um erro pode causar vários outros e nem sempre a mensagem é precisa. Erros de compilação do código Realizada depois do parsing. Além da linha e do arquivo, identificam a classe e método. Geralmente as mensagens são bem claras.
  • 4.
    Erros mais comunsna hora de Compilar javac : Command not found A variável PATH não esta corretamente configurada. Inserir a pasta bin do JDK (onde esta o javac) no PATH. Cannot resolve symbol O compilador não encontrou a definição de um determinado simbolo. Geralmente são erros de sintaxe ou a definição de classe não encontrada no CLASSPATH Class Classe is public, should be declared in a file named Classe.java Se o arquivo .java tiver uma classe publica, o nome da classe e o nome do arquivo devem ser rigorosamente o mesmo. O mesmo erro aparece caso exista mais de uma classe publica no arquivo.
  • 5.
    Erros mais comunsna hora de Compilar
  • 6.
    Erros mais comunsna hora de Compilar
  • 7.
    Erros de Runtime Passandocom sucesso a fase de compilação são gerados os arquivos .class (bytecodes). Ao ocorrer um erro no momento da execução geralmente é impresso um "stack trace". Nem sempre mostra a linha de código onde o erro começou O início do trace geralmente contém informações mais úteis Erros de runtime podem ocorrer tambem por causas externas: não existência de arquivos externos, falta de memória e falha em comunicação de rede
  • 8.
    Erros mais comunsna hora de Executar java.lang.NoClassDefFoundError : NomeClasse A classe que estamos tentando executar não foi encontrada. Verifique o nome da classe e a localização java.lang.NoSuchMethodError: main A classe que estamos executando não possuí o metodo: public static void main(String[] args){ ... } Verifique se a classe tem o metodo e se sua sintaxe esta correta. java.lang.ArrayIndexOutOfBoundsException Tentativa de acessar vetor além do limite definido. Verifique a logica da aplicação.
  • 9.
    Erros mais comunsna hora de Executar java.lang.NullPointerException referência para objeto é nula Variável de tipo objeto ou Vetor foi declarado mas não inicializado Verifique a logica da aplicação. java.lang.NoSuchMethodError: main A classe que estamos executando não possuí o metodo: public static void main(String[] args){ ... } Verifique se a classe tem o metodo e se sua sintaxe esta correta. java.lang.ArrayIndexOutOfBoundsException Tentativa de acessar vetor além do limite definido. Verifique a logica da aplicação.
  • 10.
    Dicas Devemos criar aplicaçõesque prevejam a possibilidade de erros devido a fatores externos e ajam da melhor forma possível Devemos evitar que erros de lógica sobrevivam além da fase de desenvolvimento. Para evitá-los: Escreva código claro, fácil de entender, organizado, pequeno Use endentação, siga convenções, nomes significativos, documente Escreva testes para todo código e rode-os com freqüência Para achar os erros difíceis Rode código de testes se os tiver; Ative nível de mensagens de log Aprenda a usar um depurador para navegar no fluxo de execução