Exception in thread "main" java.lang.NoClassDefFoundError

Bom dia Pessoal!

Sou Novato em Java e estou tentando entender um sistema que já existe na empresa onde trabalho.

Quando dou o seguinte comando

java arquivo.class

Recebo o seguinte erro:

exception in thread “main” java.lang.NoClassDefFoundError

Por Favor me ajudem a entender o solucionar este problema.

Grato

Milton

Alem do erro acima ainda recebo a mensagem abaixo:

    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:471)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:10
  1.  at java.net.URLClassLoader.defineClass(URLClassLoader.java:242)
     at java.net.URLClassLoader.access$1(URLClassLoader.java:210)
     at java.net.URLClassLoader$1.run(URLClassLoader.java:191)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(URLClassLoader.java:185)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:292)
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:249)
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:308)

Execute com somente java arquivo (sem o .class)

http://www.guj.com.br/java.artigo.16.1.guj

Eu estou executando sem o .class

NoClassDefFoundError = No Class Definition Found Error

ele não achou a sua classe, você compilou-a?
se compilou, vc está no mesmo diretório dela?

Compilei e estou no mesmo diretório dela!

Grato

tente

java -cp . Seuprograma

funciona?

Continuo recebendo os mesmos erros!

:shock: ô loco meu…
tentasse ler o tutorial que o outro cara indicou… lá deve ter o q você precisa.

Ele está dentro de algum pacote?
Se sim digite:

java pacote/Arquivo

Considerando que você deve estar fora do pacote… ou seja
supondo a seguinte arquitetura:

 src
  └>pacote
       └> Arquivo.java/Arquivo.class

Você deve executar dentro da pasta src.

Falou

provavelmente falta o ponto (.) no classpath.

Poste aqui sua classe principal, para analisarmos

Pois a classe principal necessita desta código abaixo como estrutura

[code] public class suaclasse(){

public suaclasse(){ // Aqui é o constructor da sua classe ou programa
// Seu código
}

public static void main(String[] args){
suaclasse seuobjeto = new suaclasse();
}[/code]

este código acima é um exemplo básico, para sua classe principal que executa a aplicação!

Olá Thiago !!!
No meu funcionou ? Como posso compilar o programa normalmente sem ter que executar esse cp e tal ?
Obrigado !!!

[quote=thiagossantos]tente

java -cp . Seuprograma

funciona?[/quote]

Depois que atualizei para a última versão do Java, acontece isso com todos os arquivos que tento executar, compila numa boa. E isso acontece em qualquer diretório que eu esteja. Sempre é mostrado esse erro desta classe não encontrada. As variáveis de ambiente estão corretas.

Galera,

com a versao do JSDK 6 vcs nao conseguem executar o programa usando java
é diferente. Vcs precisam usar java -cp . igual os amigos disseram!!

O problema pode estar em um dos dois pontos:

Isso: public static void main(String args[]) “Não irá funcionar”

é diferente disso: public static void main(String[] args) “Irá funcionar”

Após compilar sua classe, local “javac MinhaClasse.java” ou via diretório completo “javac pacote1/pacote2/MinhaClasse.java

é necessário voltar a raiz do diretório e executa-lá de uma forma diferente:

java pacote1.pacote2.MinhaClasse

[] s

1 curtida

[quote=scripiliti]O problema pode estar em um dos dois pontos:

Isso: public static void main(String args[]) “Não irá funcionar”

é diferente disso: public static void main(String[] args) “Irá funcionar”

Após compilar sua classe, local “javac MinhaClasse.java” ou via diretório completo “javac pacote1/pacote2/MinhaClasse.java

é necessário voltar a raiz do diretório e executa-lá de uma forma diferente:

java pacote1.pacote2.MinhaClasse

[] s

[/quote]

Garoto vc esta errado , olhe soh

[code]public static void main(String args[]){
}

public static void main(String [] args){
}

public static void main(String [] jose){
}

public static void main(String jose [] ){
}[/code]
Creio que antes de tentar ajudar verifique se o que vc esta dizendo funcionar e nao funcionar esta realmente correto ou nao .

Garoto,

Para encerrar o assunto,

A intenção de todos aqui é ajudar. E ontem passei pela mesma situação e corrigi exatamente da forma que coloquei no post anterior.

Caso você não tenha notado, coloquei no inicio do post “O problema pode estar em um dos dois pontos” repare na palavra “pode”, ela indica que a minha solução pode estar totalmente errada.

Outra coisa,

Se você utiliza qualquer tipo de IDE para compilar suas classes java, esse problema não irá ocorrer, mas se vc tentar executar a sua classe que possui um metodo “static main” passando o array como argumento logo após o args no prompt de comando NÃO IRÁ RODAR!. E a exception será mostrada na tela.

Conheça o contexto do problema antes de julgar oque esta certo ou errado.

Amigo, aconteceu exatamente o mesmo comigo. No java do linux funciona sem o “java -cp .”, porém no windows xp…

o lance que acho que aconteceu conosco foi o PONTO depois do -cp

tente:
c:>java -cp . nomedoprograma

menos cêpê espaço ponto espaço nomedroprograma

abraços

[quote=NiltonPsi]Amigo, aconteceu exatamente o mesmo comigo. No java do linux funciona sem o “java -cp .”, porém no windows xp…

o lance que acho que aconteceu conosco foi o PONTO depois do -cp

tente:
c:>java -cp . nomedoprograma

menos cêpê espaço ponto espaço nomedroprograma

abraços[/quote]

Tentei de tudo quanto é jeito e nada. O que resolveu pra mim:

no CLASSPATH tem que existir
CLASSPATH=.;c:\programm files\j2sdk1.6_17\jre\lib; …

sim, um ponto … Ele significa que irá procurar pelos bytecodes no diretório corrente. mesmoassim só conseguirodar com

nomepacote.nomeclasse