Erro persistente NoClassDefFoundError

40 respostas
M

Pessoal,

to compilando minhas classes pelo prompt mas toda hora dá o mesmo erro Exception in thread “main” java.lang.NoClassDefFoundError: nomedaclasse/java

Estou pegando codigos prontos de algumas apostilas, digitando no bloco de notas e salvando com . java
Até agora não consegui compilar um arquivo.

help

40 Respostas

Ayanami

Como está configurado seu classpath?

Veja se não falta o . entre os diretórios… ie
.;%JAVA_HOME%

[edit: maior clareza para as gerações futuras]

M

desculpe,

mas como faço para ver isso?

Ayanami

É Windows né?
Painel de controle -> Sistema -> Avançado -> Variáveis de ambiente.

mais detalhes sobre classpath:
http://www.guj.com.br/java.tutorial.artigo.108.1.guj

M

Windows XP

tá assim: D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin;D:\Arquivos de programas\Java\jre1.5.0_12\bin

Ayanami

Tá faltando o “.”, então ele não tenta ler do diretório atual.

depois desse jre1.5.0_12\bin adicione
;.
e veja se dá certo.

furacao123

la em variaveis de ambiente coloca o caminho dessa pasta bin em primeiro, para isso inicie com .;

Por Exemplo aqui em meu pc se encontra

.;C:\Arquivosdeprogramas\Java\jdk1.6.0_11\bin;

no seu deve ficar assim

.;D:\ArquivosdeProgramas\Java\jdk…\bin;

não esquece de colocar jdk em vez de jre

ve ae se da certo qualquer coisa posta ae dinovo

M

Ficou assim, certo?
D:\Arquivos de programas\Java\jdk1.5.0_12\bin;D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin;

mas continua o problema

Ayanami

ainda não adicionou o .

tente:
.;D:\Arquivos de programas\Java\jdk1.5.0_12\bin;D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin;

daí imagino que vá funcionar

M

ainda não funcionou

Ayanami

estranho

leia com calma:
http://www.guj.com.br/java.tutorial.artigo.12.1.guj

e sei 

para compilar, javac classe.java (extensão obrigatória)

para executar, java classe (notar que não pode colocar a extensão .class na hora de executar)
M

agora ta aprecendo que javac não é reconhecido como um comando interno ou externo

furacao123

vc ta fazendo certo, tipo o arquivo .java esta no C:

entao no prompt vc carrega C:

C:\javac MinhaClasse.java

C:\java MinhaClasse

M

o arquivo esta em j:\java\estudo
o prompt está nesse diretorio
e eu digito javac minhaclasse.java

ajfilho

Acredito que você só tenha o jre instalado.

Entre no site da Sun e baixe o jdk da mesma versão do seu JRE ou superior e instale.

Abraços!

M

mais uma coisa.

como faço para compilar e executar o codigo

class MeuPrograma {
public static void main(String[] args) {

System.out.println(“Minha primeira aplicação Java!!”);

}
}

no netbeans ou no eclipse?

furacao123

é pode ser…da uma olhada la na pasta

C:\ArquivosdeProgramas\Java

e ve se tem a pasta jdk

normalmente tem as duas jdk e jre

M

tem os dois: jdk1.5.0_12 e jre1.5.0_12

ajfilho

botão direito na classe, executar (Run).

No Netbeans é assim, Eclipse não estou usando no momento, mas imagino que não deva ser muito diferente.

Abraços!

furacao123

se vc ja criou um projeto no netbeans é soh clicar botao direito na classe java e em Executar

furacao123

no eclipse é só clicar no play verde la em cima ele compila e executa

Ayanami

acho que ele tem JDK:quote=marcosocD:\Arquivos de programas\Java\jdk1.5.0_12\bin;(…)[/quote]
hum… a “” pode indicar escape nas variáveis de ambiente também?
só como chute, tente: .;D:\Arquivos de programas\Java\jdk1.5.0_12\bin;D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin;

M

vc poderia me passar um passo a passo no eclipse? instalei ele hoje e to perdido.

Aqui tem file>new>project> e depois o que faço?

furacao123

cria um projeto novo em um diretorio ae

depois cria uma classe java e coloca esse codigo seu

e manda executa, vc num tem o netbeans??

eu nao uso qse o eclipse

furacao123

tenta com uma IDE ae q nao tem erro depois posta ae se conseguiu

falows

ajfilho

Me diz uma coisa:

Tem uma variável de ambiente chamada Path.

Posta o endereço todo dela para eu ver.

Abraços!!

yoshikichi

Me diz uma coisa:

Tem uma variável de ambiente chamada Path.

Posta o endereço todo dela para eu ver.

Abraços!!
faz assim configura o jdk:
http://www.guj.com.br/java.artigo.12.1.guj
faz o teste depois de seguir o tutorial:
prompt>javac
Se aparecer as opções de como vc pode executar o comando, é pq esta configurado corretamente.
ai entao:
prompt>javac classe.java
prompt>java classe

PS: para executar o comando “java” exemplo C:>java classe
vc tem q executar a classe q contenha o metodo main.
falow

M

com essa dica do yoshikichi o programa complilou só que todo codigo que digito ta dando erro.

Por favor, se alguem tiver um código bem pequeno e que tenha certeza que tá executando, poste aqui pra mim testar.

Estou usando codigos de apostilas mas nenhum dá certo.

Obrigado

Ayanami

uheuhe, achei isso aqui nas minhas diversões antigas:public class Eva { public static void main(String useless[]) { int num = 0; int incr; System.out.println("Um for legal:\n"); for(incr=1; incr<=89;) // omg { System.out.println("Numero atual: " + num); System.out.println("Incremento atual: " + incr); System.out.println("Incrementando " + num + " em " + incr + "..."); num += incr; System.out.println("Resultado: " + num + "\n"); System.out.println("Incrementando o incremento em " + num + "...\n"); incr += num; } System.out.println("Incremento maior do que 89: encerrando o programa..."); } }não muito bom, mas compila e roda :wink:
javac Eva.java
java Eva
^ ambos os comandos case sensitive

M

Não to entendendo mais nada

agora a pouco tava compilando blz, só dava erro na hora da execução

agora tá falando que o javac não é reconhecido como comando interno ou externo!!!

Desculpem a amolação, mas quero que isso funcione de qualquer jeito. Agora virou questão de honrra!!!

Allan_BSO

Velho é coisa é bem simples, siga conforme abaixo:

1º Passo - Variáveis do Ambiente;
Adicione na Path: [color=red]C:\Arquivos de programas\Java\jdk1.5.0\bin; [/color]C:\Outras variaveis…

[color=red]Obs:[/color]
– Verifique se esse diretório é valido para a sua versão Java “C:\Arquivos de programas\Java\jdk1.5.0”.

– Java Runtime Environment (JRE) é apenas as bibliotecas que permitem a execução dos arquivos escritos em Java

– Java SE Development Kit (JDK) Ele contém todo o ambiente necessário para a criação e execução de aplicações Java, incluindo a máquina virtual Java (JVM), o compilador Java, APIs do Java e outras ferramentas utilitárias.

Portanto, não podemos confundir JDK e JRE.

2º Passo - Copie código abaixo e salve como .java em C:/

import javax.swing.JOptionPane; public class HelloWord{ public static void main(String args[]){ JOptionPane.showMessageDialog(null,"testes","testes",1); } }

3º Abra o propt do DOS e digite: [size=18][b]CD C:[/b][color=green] [/size]// Altera o diretório para C:/ (onde .java esta salvo)[/color]

4º Digite: [size=18]javac HelloWord.java [color=green] [/size]// Cria o .class em C:/[/color]

5º Digite: [size=18]java HelloWord [color=green][/size] // Executa o .class[/color]

Verifica se isso te ajuda.
Suponho que se não rodar com as instruções citadas abaixo, provavelmente você não o JDK na sua máquina.

Valeu!

:wink:

M

Achei um tutorial aqui no forum e agora minhas variaveis globais estão assim:

Path %PATH%;%JAVA_HOME%\bin;D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin;
Java_Home D:\Arquivos de programas\Java\jdk1.6.0_11
ClassPath .;%JAVA_HOME%

Esse é o endereço onde está instalado meu SDK D:\Arquivos de programas\Java\jdk1.6.0_11\bin

e prompt continua dizendo que o javac não é reconhecido

Allan_BSO

?

Allan_BSO

D:\Arquivos de programas\Java\jdk1.6.0_11 tem que esta dentro da PATH.
Eu uso windows XP e essa variavel Java_Home não existe.

Ayanami

preguiça de ler ( :oops: ), mas as variáveis no meu PC com Windows XP estão assim:

CLASSPATH: .;%JAVA_HOME%
JAVA_HOME: C:\Arquivos de programas\Java\jdk1.6.0_10
PATH: %PATH%;%JAVA_HOME%\bin

Tente mudar as “” para “\”…
Não tenho certeza se, mesmo nas variáveis de ambiente, o Java interpreta \ como escape.

M

Veja
http://www.guj.com.br/java.tutorial.artigo.12.1.guj

Allan_BSO

Ayanami:
preguiça de ler ( :oops: ), mas as variáveis no meu PC com Windows XP estão assim:

CLASSPATH: .;%JAVA_HOME%
JAVA_HOME: C:\Arquivos de programas\Java\jdk1.6.0_10
PATH: %PATH%;%JAVA_HOME%\bin

Tente mudar as “” para “\”…
Não tenho certeza se, mesmo nas variáveis de ambiente, o Java interpreta \ como escape.

Realmente não tinha lido o tutorial.

alterei conforme o tutorial e funcionou da mesma forma:

CLASSPATH - .;%JAVA_HOME%
JAVA_HOME - C:\Arquivos de programas\Java\jdk1.5.0
Path - %PATH%;%JAVA_HOME%\bin;

Allan_BSO

marcosoc:
Achei um tutorial aqui no forum e agora minhas variaveis globais estão assim:

Path %PATH%;%JAVA_HOME%\bin;D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin;
Java_Home D:\Arquivos de programas\Java\jdk1.6.0_11
ClassPath .;%JAVA_HOME%

Esse é o endereço onde está instalado meu SDK D:\Arquivos de programas\Java\jdk1.6.0_11\bin

e prompt continua dizendo que o javac não é reconhecido

Altere para tudo maiusculo: Java_Home e ClassPath

Será que o problema não esta ai???

verifica ai amigo…

M

Apelei!!! desinstalei tudo que tinha sobre java no meu note e instalei apenas o sdk1.6 no seguinte diretorio D:\Arquivos de programas\Java\jdk1.6.0_11\bin

Compilei o codigo (HelloWorldConsole.java)

// www.guj.com.br

public class HelloWorldConsole

{

public static void main(String args[])

{

System.out.println(Hello, World!!!);

}

}

e funcionou

mas continua não executando pelo prompt
deu esse erro:

Exception in thread main java.lang.NoClassDefFoundError: HelloworldConsole (wr

ong name: HelloWorldConsole)

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$000(Unknown Source)

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)

Could not find the main class: HelloworldConsole.  Program will exit.
Ayanami

Java é case sensitive.

Você digitou java HelloworldConsole, tente java HelloWorldConsole…

M

Pessoal, vocês são nota 10 e eu sou um burro!!!

Muito obrigado a todos pela paciência e pelas dicas.

Agora funcionou tudo

Valewww

Criado 12 de dezembro de 2008
Ultima resposta 13 de dez. de 2008
Respostas 40
Participantes 6