não sei quantos já fizeram um Hello World no braço
usando um editor de texto + prompt de comand/shell +
java 5…
para um código:
public class HelloWorld {
public static void main() {
System.out.println( " Hello World! " );
}
}
um codigo bem simples…
nome do arquivo é HelloWorld.java
envio o comando para compilação da classe
javac HelloWorld.java
sendo este comando executado no mesmo diretorio que se encontra o
arquivo HelloWorld.java, a compilação é realizada sem problemas…
agora solicito o comando de execução:
java HelloWorld
agora eis o problema o console me retorna um erro, de não ter encontrado o método executor na classe…
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
alguem mais no forum teve esse problema?
alguem sabe o por que isto ocorre apenas no java 5?
alguem encontrou uma solução para o problemas?
:roll:
Primeiro você deve corrigir seu metodo main() depois você deve adicionar ao CLASSPATH um ponto, pois se não ele vai procurar por todas as classes disponiveis, mas não vai procurar no diretorio atual, pois ele não está especificado no CLASSPATH…
obs.: ponto é o diretorio atual no sistema operacional…
painel de controle --> sistema --> avançados --> variaveis de ambiente, editar ou criar CLASSPATH em variaveis do sistema e adicionar o . no valor
Provavelmente no seu sistema operacional a variável CLASSPATH está configurada com algum valor. Digite
echo $CLASSPATH
no Linux, ou
echo %CLASSPATH%
no Windows, e veja o valor dela. Como essa variável existe, quando você vai executar uma classe Java, a máquina virtual busca as classes de lá. E provavelmente, a sua classe não está no endereço da variável CLASSPATH.
A linha
java -cp . HelloWorld
Manda a máquina virtual esquecer a variável CLASSPATH e utilizar o classpath que você está informando a ela (no caso, o próprio diretório que você está). Por isso funciona.
Quando a variável CLASSPATH não existe no sistema, a máquina virtual procura, por padrão, sempre (e apenas) no diretório corrente (aquele em que você está chamando a máquina virtual). Por isso que eu nem coloco a variável CLASSPATH aqui