Os erros e dúvidas de um iniciante

em 08/09/2002 , por Rafael Steil
Introdução
Olá, neste texto vamos demonstrar alguns dos problemas e dúvidas mais comuns que o programador que esta iniciando em Java encontra. Não é intuito, porém, ser um documento extenso e muito menos cobrir todo tipo de problema que venha a ocorrer. Lembre-se de que trataremos de problemas iniciais. Caso tenha algo mais específico, como não conseguir fazer uma aplicação conectar-se a outra via Sockets, por exemplo, poste-a no fórum. O site possui uma seção de faq (perguntas frequentes), mas tendo em vista que estes problemas são realmente muito frequentes, ele faz parte de um artigo a parte! Como compilo um programa? Após ter instalado o JDK, basta usar o programa "javac" para compilar seus arquivos .java. O javac significa "java Compiler". Por exemplo, digamos que você tenha criado um arquivo chamado PrimeroTeste.java. Para compilar o mesmo, digite:

O javac deve estar no seu path. Ele fica no diretório de instalação do seu java, dentro do /bin. Como executo um programa em Java? Excecute-o com o comando "java", seguido do nome do Arquivo sem extensão. Por exemplo, se voce compilou um programa chamado PrimeiroTeste.java, verá que foi criado um arquivo chamado rimeroTeste.class, o qual é o código binário do seu programa. Para executar ele, simplesmente digite

Note que apenas informamos o nome do progarma, sem extensão alguma. Isso fará com que a JVM (java virtual machine) seja iniciada, e "carregue" a sua classe, executando-a.
Ao tentar rodar algum programa ocorre o seguinte erro:

Você está digitando o nome da sua classe corretamente? Lembre-se que java é case sensitive, isto é, ele diferencia maiúsculas de minúsculas! Este erro também pode ocorrer quando a variável CLASSPATH não esta corretamente configurada. O erro mais comum é esquecer de adicionar o diretório atual ( especificado por um ponto ) ao CLASSPATH. Algumas vezes tal variável é configurada assim:

Note que nesse caso o CLASSPATH somente esta apontando para o arquivo "algum_pacote.jar", não contendo o "ponto". O correto nesse caso é

Nota: o mesmo vale para o Windows, com a diferença que os diretórios sào separados por ponto-e-vírgula ao invés de dois-pontos. Verifique também se você está no diretório certo! Você deve estar no diretório em que a classe se encontra, ou, no caso de ser uma classe dentro de um pacote (existir a instrução package), você deve estar no diretório "raiz" do pacote, e chamar o java com o nome inteiro da classe. Ao tentar executar algum programa, acontece o seguinte erro:

Muito próximo do problema anterior, aqui é na verdade falta de atenção ao tentar rodar o programa. Como explicado anteriormente, devemos executar os programas feitos em Java sem usar a extensão do arquivo. No exemplo acima, o usuário tentou executar o programa da seguinte forma:

Dessa forma, o Java tenta encontrar o programa "class" dentro de um diretório (pacote) chamado "MeuPrograma", o qual logicamente não existe. Para resolver, basta executar assim:

Ao rodar o programa, da o seguinte erro:

Um dos erros clássicos da galera que esta iniciando em Java. Tal erro ocorre quando algum programa que não contém uma declaração válida da função main() é executado. Considere os seguintes exemplos:

Compile ( javac JavaMainBug1.java ) e tente executar ( java JavaMainBug1 ). Note que o erro ( java.lang.NoSuchMethodError : main ) ocorre. Isso se deve ao fato de não ter sido declarada a função main(). Para resolver o problema, simplesmente adicione o seguinte:

A função main() precisa necessariamente ser "static void", e conter um paramêtro array do tipo String. Veja este outro exemplo:

Compile-o e tente executar. O problema neste caso é a falta do paramêtro na função. Um último problema que pode vir a ocorrer é definir a função main() dessa forma:

Note que a variável "args" nesse caso não é um array, quando na verdade deveria ser. Outros exemplos de assinatura do método main que não são tão usuais, mas funcionam:

Não se incomode caso você não entenda estas linhas de declaração do main, praticando java você as entendará. Como vejo qual versão do Java tenho instalada? Use o comando:

Criei um arquivo chamado PrimeiroTeste.java, mas o compilador se recusa a compilá-lo; e porque sou obrigado a usar a extensão ".java" nos arquivos de código fonte? O compilador javac leva em consideração que todo arquivo com código fonte Java deva ter a extensão .java. Qualquer coisa diferente disso nem chegará ao processo inicial de compilação.
Conclusão
Esperamos que este artigo ajude você começar a programar java, sem encontrar os obstáculos que a grande maioria encontra. Para qualquer dúvida de iniciante que não seja encontrada aqui, porfavor, poste no nosso fórum. Teremos o maior prazer em respondê-lo!