Problemas na Execução jdk1.6.0_10

Já postei aqui este mesmo tópico anteriormente e consegui uma solução que, apesar de pensar ser definitiva, ainda não resolveu totalmente o problema apresentado, tanto no windows XP quanto no Vista.

A compilação funciona perfeitamente, conforme a seguir:

[b]C:\LivroJava6\Cap5>javac Exemplo0506.java

C:\LivroJava6\Cap5>[/b]

Quando Executo com o comando com o parâmetro -cp . o programa funciona, conforme abaixo:

[b]C:\LivroJava6\Cap5>java -cp . Exemplo0506
area de um quadrado…9.0
area de um retangulo…6.0
area de um cubo…30.0

C:\LivroJava6\Cap5>[/b]

Quando uso o comando sem nenhum parâmetro é apresentada a seguinte mensagem:

[b]C:\LivroJava6\Cap5>java Exemplo0506
Exception in thread “main” java.lang.NoClassDefFoundError: Exemplo0506
Caused by: java.lang.ClassNotFoundException: Exemplo0506
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: Exemplo0506. Program will exit.

C:\LivroJava6\Cap5>[/b]

As configurações de ambiente são as seguintes:

JAVA_HOME - C:\Arquivos de Programas\Java\jdk1.6.0_10
path - C:\Arquivos de Programas\Java\jdk1.6.0_10\bin
classpath - C:\Arquivos de Programas\Java\jdk1.6.0_10\lib

Acredito que o problema possa estar no path ou classpath e agora eu iniciei a parte de ACESSO A MÉTODOS DE OUTRAS CLASSES e o parâmentro
-cp . passa a não funcionar a contento. Se alguém puder me dar uma dica eu ficarei muito agradecido.

poste sua classe Exemplo0506

abraços

class Exemplo0506
{
public static void main(String args[])
{
System.out.println(“area de um quadrado…” + area(3));
System.out.println(“area de um retangulo…” + area(3,2));
System.out.println(“area de um cubo…” + area(3,2,5));
}

public static double area(int x)
{
	return (x * x);
}


public static double area(int x, int y)
{
	return (x * y);
}

public static double area(int x, int y, int z)
{
	return (x * y * z);
}

}

é … realmente esta fora de meu conhecimento este problema,
testei aki e funcionou perfeitamente, mas eu uso jdk 1.4.2_13
experimente reinstalar a jdk ou utilizar uma outra versão, lembre-se de alterar o classpath para a nova jdk

abraços e boa sorte !

É que o Java 5.0 em diante não incluem (mesmo no Windows) o diretório corrente como parte do classpath.

Portanto, você tem de usar:

java -classpath . Exemplo0506

ou

java -cp . Exemplo0506

thingol, nunca ouvi falar disso na versao 5, inclusive testei aqui e funcionou sem os parametros.
ja na versão 6, nunca estudei as modificações …

abraços

Alguém aí usa a jdk1.6.0_10???

Uso e posso dizer que ela é a versão menos bugada que existe. Siga a minha recomendação (rode o seu programa com o parâmetro -cp . )

Thingol, os programas até rodam com o parâmetro - cp . nomedaclasse. O problema está quando comecei a estudar Acesso a Métodos de Outras Classes. Aí apresenta a seguinte mensagem:

[b]C:\LivroJava6\Cap5>javac Exemplo0507.java
Exemplo0507.java:6: cannot find symbol
symbol : variable Exemplo0502
location: class Exemplo0507
Exemplo0502.limpaTela(); // chama o metodo do Exemplo0502 limpaTela
^
Exemplo0507.java:12: cannot find symbol
symbol : variable Exemplo0503
location: class Exemplo0507
Exemplo0503.tempo(1);//chama o metodo do Exemplo0503 tempo()
^
Exemplo0507.java:13: cannot find symbol
symbol : variable Exemplo0502
location: class Exemplo0507
Exemplo0502.limpaTela();
^
3 errors

C:\LivroJava6\Cap5>[/b]

Observando que todas os métodos e classes estão no mesmo diretório.

Aí vai a classe que informei anteriormente:

class Exemplo0507
{
public static void main(String args[])
{
int h,m,s;
Exemplo0502.limpaTela(); // chama o metodo do Exemplo0502 limpaTela
for (h=0;h<24;h++)
for(m=0;m<60;m++)
for(s=0;s<60;s++)
{
System.out.print("Para encerrar pressione Ctrl + C "+ h + “h:” + m + “m:” + s + “s:”);
Exemplo0503.tempo(1);//chama o metodo do Exemplo0503 tempo()
Exemplo0502.limpaTela();
}
}
}

Ah, da mesma maneira que você passou “-classpath .” para o java.exe, você tem de passar “-classpath .” para o javac.

Exemplo:

javac -classpath . Exemplo0507.java

Aí ele vai tentar compilar as outras coisas que estão no mesmo diretório, se possível. Se essa outra classe (Exemplo0502) não estiver compilando direitinho, então você vai não conseguir compilar a Exemplo0507.java, que depende dessa Exemplo0502. OK?

thingol,

FUNCIONOU!!!

Valeu mesmo. Cada vez eu fico mais entusiasmado com o Java e com a comunidade que faz parte dele.

Valeu Mestre!!!