Como rodar um classe java (que contem o metodo main) que esta num pacote via terminal?

1 resposta
faeldix

É simples ne? So que quando essa classe esta dentro de um pacote.. nao funciona

C:\SJCP\java>java "Nova pasta\MinhaClasse.class"
Exception in thread "main" java.lang.NoClassDefFoundError: Nova pasta\MinhaClasse/class
Caused by: java.lang.ClassNotFoundException: Nova pasta\MinhaClasse.class
        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: Nova pasta\MinhaClasse.class.  Program will exit.

C:\SJCP\java>

1 Resposta

E

“Nova Pasta” indica que você está morrendo de preguiça de renomear o diretório que você criou com o Windows Explorer :slight_smile:

Exceto pelo fato de você estar com preguiça (eu também tenho, não fique envergonhado) o comando java.exe requer o nome da classe, não o nome de um arquivo. Não existem classes com o nome “class” porque isso não é permitido pela linguagem Java.

Se você precisa especificar qual é o diretório onde estão os seus arquivos .class compilados, use o parâmetro -cp. Por exemplo (se bem que não sei se é o seu caso: )

java -cp “Nova pasta” MinhaClasse

Digamos que a classe está dentro de um pacote com.exemplo. Então o java.exe tem de ser chamado como:

java -cp “Nova pasta” com.exemplo.MinhaClasse

onde com.exemplo.MinhaClasse é o nome completo da classe, incluindo o pacote.

Criado 23 de março de 2012
Ultima resposta 23 de mar. de 2012
Respostas 1
Participantes 2