Compilar programa por linha de comando

5 respostas
jks1903

Pessoal, preciso de ajuda para compilar um programa por linha de comando.
Está resultando um erro, informando que não existe a classe Main.

Porém ao rodar a aplicação na IDe funciona normalmente.

O programa é compilado sem erros pela linha de comando, mas ao executar o java Programa, é retornado o seguinte erro:

W:\java\BackupSH\src\backupsh>java Main

Exception in thread main java.lang.NoClassDefFoundError: Main (wrong name: bac

kupsh/Main)

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

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

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)

Could not find the main class: Main.  Program will exit.

Eu imaginei que pudesse ser algum dos imports, mas esse teste acima exibe simplesmente um Olá Mundo.

Alguem sabe ocm resolver?

Obrigado.

5 Respostas

muniquewassem

Hey,

O problema parece ser com o seu classpath. Tente executar assim: java ?classpath . nomedaclasse

jks1903

Desculpe a ignorância, rsrs, mas é a primeira vez que preciso fazer isso…

Esse comando acima deve ser executado no diretório onde se encontra o arquivo .CLASS?

Preciso adicionar o diretório da aplicação nas variáveis de ambiente do Windows?

Eu apenas adicionei o diretório do java, para o comando “javac” funcionar.

Ele compila tudo certo. O problema é pra executar mesmo.

Obrigado.

pmlm

Na tua directoria src:

java backupsh.Main
jks1903

Agora sim consegui executar.

Mas uma dúvida.

Estando no src e executando backupSH.Main ele executa.

Pq estando dentro do diretório backupSH e executando somente o Main ele não encontra a classe?

pmlm

A tua classe Main está na package backupsh, sendo assim, o que existe é uma class backupsh.Main e não apenas Main.

Criado 2 de junho de 2011
Ultima resposta 2 de jun. de 2011
Respostas 5
Participantes 3