Compilando classes em pacotes

8 respostas
L

Bom dia a todos!
Estou tentando executar uma classe java via linha de comando usando o Notepad++.
A estrutura que estou usando é:

Classpath:
cert
- Sludge.java
book
- Goo.java

E as classes estão da seguinte maneira: Sludge
package cert;

public class Sludge{

	public void testIt(){
		System.out.println("sludge");
	}

}
Goo
package book;

import cert.*;

class Goo{

	public static void main(String[] args){		
		Sludge o = new Sludge();
		o.testIt();		
	}
	
}
A compilação de ambas as classes estou compilando da seguinte maneira:
javac -classpath <classpath> <nome_do_arquivo> 
Exemplo do meu script:
javac -classpath D:\java\Exame_3_e_1_4\ <nome_do_arquivo>
A compilação em ambos os casos ocorre sem erro, porém al tentar executar a minha classe Goo eu recebo uma exception: Comando
java -classpath <classpath> <nome_do_arquivo>
Exemplo do meu script:
java -classpath D:\java\Exame_3_e_1_4\ Goo
Exception
java.lang.NoClassDefFoundError: Goo
Caused by: java.lang.ClassNotFoundException: Goo
	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)
Could not find the main class: Goo.  Program will exit.
Exception in thread "main"

Acredito que o erro deva ser bem básico, mas não estou conseguindo enxergar onde estou errando, já tentei inclusive executar sem a opção classpath.
Alguma sugestão.

Obrigado

8 Respostas

oberilo

Ola grande . . .

ClassNotFoundException - indica que não esta encontrando a classe

Verifica o endereço onde esta sua classe Goo

L

Vlw amigo.

Olha pela mensagem também verifiquei que ele não estava encontrando a minha classe Goo, porém esta classe esta dentro da pasta D:\java\Exame\1_3_e_1_4\book, onde book é o package dela, e o meu .class também foi gerado dentro deste diretório.
Antes eu estava tentando excutar da seguite maneira:

cd "D:\java\Exame_3_e_1_4\book"
java -classpath D:\java\Exame_3_e_1_4\ Goo

e tentei assim também:

java -classpath D:\java\Exame_3_e_1_4\ D:\java\Exame_3_e_1_4\book\Goo

E mesmo assim ele ainda não encontra a classe Goo.

Alguma sugestão.

LucasRey

Verifique se os imports estão OK.

E dá um rebulid no projeto, coisas parecidas já aconteceram comigo e um rebuild funcionou.

L

Cara eu fiz o rebuild, como estou compilando na “unha” sem usar IDE, apaguei os .class gerados anteriomente e compilei.
Mas na hora que vou executar, mesmo erro.

Minha classe Goo esta com os imports corretos veja:

package book;

import cert.Sludge;

class Goo{

	public static void main(String[] args){		
		Sludge o = new Sludge();
		o.testIt();		
	}	
}

E a Sludge:

package cert;

public class Sludge{

	public void testIt(){
		System.out.println("sludge");
	}

}
pmlm

java -classpath D:\java\Exame\1_3_e_1_4\ book.Goo

L

Resolvido.
Quer dizer que toda vez que a minha classe estiver em pacote ela deve ser executada desta maneira?

Obrigado a todos.

pmlm

Sim.

L

Obrigado a todos novamente.

Criado 5 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 8
Participantes 4