Porque compila mas não roda? | Java I: Primeiros passos | Solucionado
Porque compila mas não roda?
(1.3k xp, 13 posts)
public class MeuProgramaModificado {
public static void main(String[] args) { System.out.println("Este é o meu primeiro programa"); } }
OBS.: Consigo compilar com javac MeuProgramaModificado
Ele cria o bytecode MeuProgramaModificado.class
Mas quando rodo com java MeuProgramaModificado, aparece a seguinte menssagem: Erro:Não foi possível localizar nem carregar a classe principal MeuProgramaModificado
Não consigo entender pois os arquivos estão dentro do diretório onde estou executando.
(200.9k xp, 156 posts)
Weslen, a variável de ambiente do Java foi configurada? Qual Sistema Operacional você está utilizando?
Realmente não faz sentido algum. Se o .class está no diretório, ele deveria executar.
Você digitou corretamente, certo? Tenta dar um nome menor pra classe, pra garantir mesmo que não há erros de digitação, hehe. Tipo class Teste no arquivo Teste.java.
Sim já configurei a variável de ambiente,
JAVA_HOME e no campo valor: com o caminho correto do diretório onde o java foi instalado
E também já configurei a variável de ambiente Path, com o caminho correto também.
Tanto é que se eu digitar javac -version no prompt de comando executa normalmente e mostra a versão do java.
Estou utilizando o windows 7 Ultimate 32bits
Maurício eu já renomeei mas mesmo assim continua o erro. Ele compila criando bytecode Teste.class mas quando digito java Teste dá o mesmo erro, dizendo que não encontrou o arquivo. hehehe que mistério.
(42.2k xp, 6 posts)
Pode verificar que javac -version e java -version estão na mesmo versão.
Weslen, cole o classpath e o JAVA_HOME para que possamos ver se há algum erro.
Diogo não estão. No javac -version , retorna: javac 1.7.0_45
No java -version, retorna: java version "1.7.0_60"
João colei aí o JAVA_HOME e o Path
Path %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Java\jdk1.7.0_45
Modifique seu variável de ambiente Path iniciando com %JAVA_HOME%\bin em primeiro e execute o programa com java -cp . MeuProgramaModificado antes compile.
Diogo com o comando java Teste, não rodou deu a mensagem de erro dizendo que não encontrava o arquivo.
Já com o comando java -cp . Teste , rodou normal.
Digo e lembrando eu troquei já a variável de ambiente Path para %JAVA_HOME%\bin e executei com o java - cp. Teste, e funcionou.
Porque só funciona com o java -cp . Teste, e não só java?
o -cp do java: pesquisa o caminho da classe principal dos diretórios e arquivos e encontrou sua classe.
É Diogo, então parece que vou ter que mandar pesquisar com o -cp todos os programas e próximos exercícios que eu fizer.
Super estranho precisar setar o classpath para o próprio path da pasta que vc está...
(2670.5k xp, 5740 posts)
Por desencargo de consciência, confere se você não declarou nenhum pacote nessa classe. Caso tenha declarado, a classe compila, mas na hora de rodar ele não consegue achar :(.
O meu classpath está assim: CLASSPATH Program Files\Java\jre7\lib\ext\QTJava.zip
Mas estou pensando que o classpath deveria apontar para o diretorio do jdk e não do jre7 como está ai, e porque ele aponta para esse arquivo QTJava.zip? Algém sabe me dizer se está correto assim como acima ?
Não deveria apontar pra QT não. Remova a variável, você não precisa dela. O JAVA_HOME é suficiente.
Alberto eu não declarei nenhum pacote dentro desta classe não. Inclusive ela se encontra em:
C:\Users\Usuario\workspace\Alura\Capitulo1\src
Será que o fato de ela estar em um projeto dentro do workspace (Alura), interfere e pode dar algum problema na hora de compilar e rodar através do prompt de comando? Estou compilando e rodando já dentro da pasta src, mas mesmo assim diz que não consegue encontrar o arquivo da classe que estou tentando rodar.
Maurício removi a variável classpath mas não resolveu continua não rodando, e só roda se eu usar java -cp . MeuProgramaModificado
Conversando aqui, muita gente disse que alguns Windows ficam meio doidos com algumas versões do Java, e vc precisa passar o -cp . sim.
Então faça assim, ok?
Logo quando vc chegar no capítulo de Eclipse, isso passa! :)
Elisângela Rosa Cerqueira Valdo
(134.0k xp, 89 posts)
weslen, verifique se você tem mais de uma versão do java instalado na máquina. Dou suporte a alguns clientes que usam vários programas da receita federal e caixa econômica, e quando eles tem mais de uma versão do java instalado os programas ficam loucos. Não se esse é o caso, mas o java, diferentemente do .net framework é instável com relação a várias versões em uma mesma maquina. Ele não se comporta da mesma maneira em sistemas operacionais diferentes. Em alguns não dá problemas mas em outros sim, principalmente se seu sistema for 64 bits.
Marcus Pinheiro de Santana
(20.8k xp, 2 posts)
Chefe da Divisão de Desenvolvimento de Sistemas
Entendo Sandro, não vou poder reinstalar o JAVA aqui porque este PC é da empresa que trabalho e temos alguns aplicativos aqui que dependem dessas pré instalações que fizemos do JAVA, então vou utilizar rodar os exercícios do curso (Alura), com a opção "-cp . " que funciona blz, e esperar mesmo chegar no Eclipse.
Você também pode usar uma máquina virtual, como o virtualbox ou o Windows Virtual PC (eu uso este último, não gostei muito do virtualbox, mas é uma questão pessoal). A vantagem é que a máquina virtual pode rodar o sistema operacional que você preferir e usar a versão do java mais atual sem mexer em nada na máquina física. O único requisito é que o seu processador suporte virtualização.
Legal, boa dica. Vou ver essa possibilidade aqui. Porque meu PC não é dos melhores. Mas realmente seria uma boa solução para estudar sem prejudicar o que temos instalado aqui. Valew ai.
Estou com uma versão apenas do Java instalado, o -cp não funciona, o problema persiste. Mais alguma sugestão do que pode ser?