Hum… tenho tido alguns probleminhas com o meu aplicativo java!
1º - Quando eu compilo os .java com o Eclipse, se eu tento rodar a classe principal no prompt com o comando java algumas das classes que foram compiladas não são encontradas, como se não tivessem sido compiladas e não existissem.
2º - Quando eu crio um arquivo .jar, com manifest, usando o curinga *.class, sempre tem uma classe que fica de fora.
3º - Mesmo que eu atualize o .jar colocando a classe que faltou, quando eu mando executar o .jar dá um monte de erro. Detalhe: no meu manifest existe um “Main-Class”.
Melhor você checar o nível de diretórios, classpath e se está usando a ferramenta de jar corretamente.
Fox_McCloud
Eu usei o seguinte comando:
jar -cvfmi teste.jar MANIFEST.MF *.class
E é com esse comando que sempre fica de fora um dos arquivos .class. E mesmo usando um -u depois e colocando o arquivo dá uns erros na hora de executar. :?
Quanto ao classpath, é só um programinha simples que tem todas as classes no mesmo diretório.
danieldestro
Muito estranho ele incluir alguns .class e outros não. Verifique se todos os seus .class estão no diretório corrente.
Fox_McCloud
Estão sim, com certeza! E eu já conferi também o Main-Class do MANIFEST.MF, também está correto. Será que isso tem alguma ligação com o fato do java não rodar o que eu compilei no Eclipse :?: Só roda se eu mandar rodar no Eclipse!
danieldestro
Ele dá alguma mensagem de erro na execução fora do Eclipse?
Fox_McCloud
Sim, diz que não reconhece uma das palavras, que por acaso é uma das classes.
E depois mesmo quando eu consigo inserir a classe que falta dá um erro na hora de executar o jar, como se o programa não tivesse encontrado o Valida.class, exatamente como acima, onde não havia jar.
danieldestro
O valida tem algum package definido?
Se não, experimenta isso:
javac -classpath . Teste.java
E outra, os dois últimos erros apontam que você não declarou as variáveis padrao e validacao.
Fox_McCloud
danieldestro:
Se não, experimenta isso:
javac -classpath . Teste.java
Agora funcionou!
E para executar eu também tive que usar java -classpath . Teste
Eu refiz o arquivo .jar da seguinte forma:
jar -cvfmi teste.jar MANIFEST.MF .
Então eu renomeei o .jar como .zip, abri com o Winzip, removi os arquivos desnecessários (.java, .txt, etc…), renomeei de volta para .jar e agora funciona. Não entendi nada, mas está funcionando.
Dicas?
obs: grato pela ajuda até agora!
danieldestro
Como queria executar algo que nem compilar compilava?
Fox_McCloud
Eu estava tentando usar os arquivos .class que o Eclipse havia gerado. Porque o local atual não é o classpath padrão do meu java?
danieldestro
Provavelmente porque o classpath não está definido.