Erro ao criar arquivo .jar <RESOLVIDO>

2 respostas
r_Jovelli

Olá pessoal,

Estou estudando há um bom tempo Java e cheguei em no capítulo de distribuição de aplicativo no “Use a cabeça Java” da Kathy Sierra…

Eu criei uma classe qlq para fazer o teste de criação do arquivo .jar, mas deu um erro que inclusive tem alguns tópicos aqui no GUJ mesmo que fala sobre isso, mas o tópico aqui fala do NetBeans, eu estou fazendo na mão mesmo pelo cmd…

Abri o cmd, entrei na pasta do arquivo HelloWorld.class criei um arquivo chamado manifest.txt que contém um única linha escrito Main-Class:HelloWorld (tudo junto) e executei o comando:

jar -cvmf manifest.txt app.jar HelloWorld.class

o comando acima executa sem problemas, o arquivo app.jar é criado contendo o HelloWorld.class e uma pasta chamada META-INF contendo um arquivo chamado manifest.mf, está pelo menos teoricamente correto, mas ao executar:

java -jar app.jar

Aparece o erro

Alguém faz idéia do que está errado??, algum arquivo faltando ou configuração ou algo do tipo???
Abraço…

PS: Tenho certeza que HelloWorld.class tem uma public static void main(String[] args)

:slight_smile: :slight_smile: :slight_smile:

2 Respostas

cristian_clever

E ae!

A grande “treta” é que vc precisa especificar qual é a classe main, é pra isso que serve o manifest (dentre outras coisas)!

Uma outra ideia, um pouco mais simples, é vc adicionar o .jar ao classpath, e em seguida executar o coamndo java .
Dessa forma vc não precisa e não depende do manifest.

O comando abaixo resolve o seu problema

jar -cvfe <nomeDoJar>.jar <classe Main> *.*

Deu uma consultada nos parametros do executavel “jar” lá vc verá todas as possibilidades a serem realizadas

[]s

r_Jovelli

putz cara, deu certo aqui 100%…

Não faço idéia porque não estava funcionando, o -cvfm significa respectivamente c: criar novo arquivo, -v gerar saída verbose na saída padrão, f: específicar nome do arquivo arquivado (archive file name) e e: específicar ponto de entrada da aplicação para aplicação stand-alone empacotada em um arquivo jar…

o m: incluir informação de manifest específicada de um arquivo manifest…

O correto era para o m funcionar visto que eu criei o arquivo de manifest e inseri o comando Main-Class:HelloWorld, mas não deu certo não… mas com o comando sem o “m” e com “e” no lugar deu certo…

vlw cristian_clever

Abraço…
:smiley: :smiley: :smiley:

Criado 26 de outubro de 2009
Ultima resposta 26 de out. de 2009
Respostas 2
Participantes 2