Exception in thread "main" java.lang.NoClassDefFoundError

27 respostas
H

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

27 Respostas

H

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

Execute com somente java arquivo (sem o .class)

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

H

Eu estou executando sem o .class

T

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?

H

Compilei e estou no mesmo diretório dela!

Grato

T

tente

java -cp . Seuprograma

funciona?

H

Continuo recebendo os mesmos erros!

T

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

K

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

M

provavelmente falta o ponto (.) no classpath.

F

Poste aqui sua classe principal, para analisarmos

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

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();
}

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

P

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

thiagossantos:
tente

java -cp . Seuprograma

funciona?

D

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.

J

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!!

S

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

E
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

Garoto vc esta errado , olhe soh

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

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

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


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

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.

N

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

M

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

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

M

Olá Boa Noite … Comecei a estudar Java e tive o mesmo problema.

Segui os passos do amigo Kina e funcionou corretamente.

Muito Obrigado!
Abs :smiley:

D

Resolvi este problema de uma forma simples e sarcástica…

Pode ser que funcione!

Estava com o mesmo problema, tudo mapeado, tudo certinho, as classes, o jta no lugar certo, os jars e nada de rodar, estava dando este mesmo problema.

Aíí um amigo meu foi na lista de servers (Apache 6.0 no meu caso), clicou com o botão direito e deu Clean nele.

Quando rodei de novo o programa, pegou direitinho =x

Talvez ajude!

L

ele pode ter esquecido de colocar a linha na classe:

package com.example.xyz;

H

Olá pessoal. Também sou novo no Java e estou enfrentando o mesmo problema. Vou explicar minha situação. Eu baixei o glassfish 3 porque dizia que vinha com o compilador java. De fato, tem uma pasta chamada jdr7, que é o compilador. Pois bem, seguindo as instruções acima, fiz o seguinte:

1º. Criei uma variável de ambiente JAVA_HOME com valor <C:\glassfish3\jdk7>

2º. Na variável CLASSPATH adicionei ao final do valor <;C:\glassfish3\jdk7\lib>

3º. Na variável Path adicionei ao final do valor <;C:\glassfish3\jdk7\bin>

4º. Criei o arquivo HelloWorld.java

5º. Escrevi no Prompt de Comando: . Apareceu o arquivo HelloWorld.class

6º. Escrevi: . Apareceu a mensagem do tópico. Também tentei <java -cp . HelloWorld> mas o resultado foi o mesmo. Transferi as pastas para C:\glassfish3\jdk7\lib, mas o resultado foi o mesmo.

Peço a contribuição de vcs. Se eu tiver feito algo errado me digam. Obrigado.

H

só pra constar meu sistema é windows 7.

B

no meu funcionou apenas dando um Clean no projeto.

D

também estou tentando executar e não estou conseguindo eu segui passo a passo mas aparece este mesmo erro

import javax.swing.JFrame;

public class Principal {

public static void main(String args[]){

JFrame janela = new JFrame();

janela.setSize(500,350);

janela.setVisible(true);

}

}

N

Pra mim, isso aqui deu certo (e usando MAC OSX 10.9.5).

Fui no terminal da pasta que está acima de onde se encontra o Pacote, no meu caso “/Users/usuario/myWorkspace/myProjectname/src”. Dentro da pasta src vai ter outra subpasta com o nome do pacote (Ex.: nome do pacote sendo “package1”).

Então, estando na pasta “src” já citada, eu executei java package1/ClasseQueEuQueroExecutar e foi.

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

Criado 29 de junho de 2005
Ultima resposta 23 de set. de 2014
Respostas 27
Participantes 20