Olá mundo!

12 respostas
L

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

12 Respostas

Guitar_Men

Tenta colocar:

package transforma;   
  
class Transforma{   
       
       
    public Transforma(){   
    }   
       
    public static void main(String args[]){   
        System.out.println("Ola mundo");   
    }   
}
peczenyj

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).

L
Guitar_Men:
Tenta colocar:
package transforma;   
  
class Transforma{   
       
       
    public Transforma(){   
    }   
       
    public static void main(String args[]){   
        System.out.println("Ola mundo");   
    }   
}

Desculpe, mas no que mudou?

L
peczenyj:
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).

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!

peczenyj

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 :slight_smile:

Guitar_Men
lfernandesfotos:
Guitar_Men:
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

L

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)

LPJava

configure seu ambiente de desenvolvimento como em anexo!!

L

Variáves de ambiente já configuradas. O problema persiste!

LPJava

ta usando qual ide?

L

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.

L

Resolvi deletando a variável CLASSPATH.

Agradeço a todos!

Criado 10 de março de 2008
Ultima resposta 11 de mar. de 2008
Respostas 12
Participantes 4