Onde foi que eu errei???
package transforma;
class Transforma{
Transforma(){
}
public static void main(String args[]){
System.out.println("Ola mundo");
}
}
java.lang.NoClassDefFoundError: Transforma
Onde foi que eu errei???
package transforma;
class Transforma{
Transforma(){
}
public static void main(String args[]){
System.out.println("Ola mundo");
}
}
java.lang.NoClassDefFoundError: Transforma
Tenta colocar:
package transforma;
class Transforma{
public Transforma(){
}
public static void main(String args[]){
System.out.println("Ola mundo");
}
}
Seu problema deve ser o package:
$ mkdir transforma
$ javac Transforma.java
$ mv Transforma.class transforma/
$ java -cp . Transforma
Exception in thread "main" java.lang.NoClassDefFoundError: Transforma
$ java -cp . transforma.Transforma
Ola mundo
perceba só: Transforma está no package transforma (vc informa isso na primeira linha). Logo quando vc tenta "executar" a classe a maquina virtual não encontra essa classe, vc tem que informar o package+classe. Entretanto vc precisa ter o .class dentro da mesma estrutura de diretorios que representa o package.
Se a sua classe estivesse no package
br.com.guitarman.teste;
tu terias que criar a estrutura de diretorios
br/com/guitarman/teste
e invocar a classe
br.com.guitarman.teste.Transforma
Perceba que, se vc for utilizar essa classe em outro arquivo, pode informar o "caminho completo" ou utilizar o import
import br.com.guitarman.teste.*;
Vc vai compreender estes conceitos em breve, se continuar a se dedicar bastante e ler a sessão de artigos e tutoriais do guj, principalmente os primeiros (sobre classpath principalmente).
Tenta colocar:package transforma; class Transforma{ public Transforma(){ } public static void main(String args[]){ System.out.println("Ola mundo"); } }
Desculpe, mas no que mudou?
Seu problema deve ser o package:$ mkdir transforma $ javac Transforma.java $ mv Transforma.class transforma/ $ java -cp . Transforma Exception in thread "main" java.lang.NoClassDefFoundError: Transforma $ java -cp . transforma.Transforma Ola mundoperceba só: Transforma está no package transforma (vc informa isso na primeira linha). Logo quando vc tenta "executar" a classe a maquina virtual não encontra essa classe, vc tem que informar o package+classe. Entretanto vc precisa ter o .class dentro da mesma estrutura de diretorios que representa o package.
Se a sua classe estivesse no package
br.com.guitarman.teste;
tu terias que criar a estrutura de diretorios
br/com/guitarman/teste
e invocar a classe
br.com.guitarman.teste.Transforma
Perceba que, se vc for utilizar essa classe em outro arquivo, pode informar o "caminho completo" ou utilizar o import
import br.com.guitarman.teste.*;
Vc vai compreender estes conceitos em breve, se continuar a se dedicar bastante e ler a sessão de artigos e tutoriais do guj, principalmente os primeiros (sobre classpath principalmente).
Ele dá o mesmo erro mesmo removendo a declaração do pacote... coloquei isso tentando solucionar.
Eu to tentando fazer isso no JEdit, pq no NetBeans tá funcionando corretamente. Simplesmente não me conformo!
o construtor ser publico, default ou nem ser declarado não interfere, é problema de classpath.
até pq o main é estático (pertence à classe) e o mesmo não é instanciado em parte alguma. é claro que não custa tentar 
Tenta colocar:package transforma; class Transforma{ public Transforma(){ } public static void main(String args[]){ System.out.println("Ola mundo"); } }Desculpe, mas no que mudou?
O modificador de acesso do construtor, foi apenas uma sugestão :D
Dá uma olhada nessa implementação. Não inclui declaração de pacotes, então deveria poder ser executado no mesmo diretório onde ele se encontra, não? Mesmo assim ele dá o mesmo erro. Por que funciona no NetBeans e aqui não?
import java.lang.Integer;
public class Transforma {
public static void main(String args[]){
String palavra = "MACKENZIE", letra;
String resultados[] = new String[palavra.length()];
int vetor[][] = new int[palavra.length() + 1][9];
for(int i = 0; i < palavra.length(); i++){
letra = palavra.substring(i, i+1);
resultados[i] = binario("00000000" + Integer.toBinaryString((int) letra.charAt(0)));
}
}
public static String binario(String s){
return s.substring(s.length()-9,s.length()-1);
}
}
Exception in thread "main" java.lang.NoClassDefFoundError: Transforma
Caused by: java.lang.ClassNotFoundException: Transforma
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
configure seu ambiente de desenvolvimento como em anexo!!
Variáves de ambiente já configuradas. O problema persiste!
ta usando qual ide?
A IDE que estou usando e, onde funciona o programa, é o NetBeans.
Mas o problema só ocorre quando tento fazer uma simples classe “Hello World” em Notepad e executá-la no Prompt do DOS. Ele compila a classe mas não consegue executá-la, retornando o erro descrito anteriormente. Verifiquei as configurações do ambiente, mas está tudo ok, pelo que me consta:
JAVA_HOME = C:\Arquivos de programas\Java
Path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Arquivos de programas\Java\jdk1.6.0_04\bin;C:\mysql\bin
Se tiver mais alguma dica, agradeço.
Resolvi deletando a variável CLASSPATH.
Agradeço a todos!