Gerar um .jar[RESOLVIDO]

Olá povo, estou tentando criar um .jar mas já fiz diversas coisas e não consegui. Não sei usar nenhuma IDE, somente o JCreator. Criei um Manifest da seguinte forma: manifesto.txt

Manifest - Version 1.0 Create - by: PPI V Main-Class: PrincipalMenu
E coloquei este arquivo.txt junto a um diretório que contém meu projeto juntamente aos .class. Depois no prompt de comando digitei:

jar cmfv manifesto.txt academia.jar ".class. 

sendo que o arquivo manifesto .txt eu coloquei junto do meu projeto, no mesmo diretório (como ja expliquei).
Depois de fazer isso a mensagem que veio através de prompt de comando foi:

C:\Users\Daniel\Meus documentos\ppi - testes>jar cmfv manifesto.txt academia.jar" .class java.io.IOException: invalid header field at java.util.jar.Attributes.read(Attributes.java:389) at java.util.jar.Manifest.read(Manifest.java:182) at java.util.jar.Manifest.<init>(Manifest.java:52) at sun.tools.jar.Main.run(Main.java:132) at sun.tools.jar.Main.main(Main.java:1022)
O que estou fazendo de errado? Estou seguindo as instruções da vídeo aula: http://www.youtube.com/watch?v=2XTCdGSe0Wc Alguém com boa vontade, poderia me dar uma ajuda. Obrigado.

Creio que o problema está na ordem dos parâmetros. Experimente o seguinte:

jar -cfm academia.jar manifesto.txt *.class

A propósito: assegure-se de que o seu arquivo de manifesto possui uma linha em branco no fim. Caso não haja esta linha em branco, haverá problemas ao gerar o JAR.

Veja a mensagem que apareceu agora, através do prompt:

C:\Users\Daniel\Meus documentos\ppi - testes>jar -cfm academia.jar Manifesto.txt*.class java.io.FileNotFoundException: Manifesto.txt*.class (A sintaxe do nome do arquivo, pasta ou nome do volume estß incorreta) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:106) at java.io.FileInputStream.<init>(FileInputStream.java:66) at sun.tools.jar.Main.run(Main.java:131) at sun.tools.jar.Main.main(Main.java:1022)

Tem que haver pelo menos um espaço em branco entre o nome “manifesto.txt” e o nome “*.class”, você escreveu os dois nomes “colados”, sem espaço nenhum entre eles.

Então meu amigo, continua apresentando erros. O que será que está impedindo a execução? Eu dei um “DIR” nesta pasta “PPI - Testes”, para que você veja o arquivo manifesto.txt junto as classes. Fiz o que você sugeriu mas como vê, ainda está com erros…
Veja o prompt:

[code]Microsoft Windows [versão 6.0.6000]
Copyright © 2006 Microsoft Corporation. Todos os direitos reservados.

C:\Users\Daniel\Meus documentos\ppi - testes>dir
O volume na unidade C é Vista Ultimate
O Número de Série do Volume é 2E99-322D

Pasta de C:\Users\Daniel\Meus documentos\ppi - testes

27/05/2010 18:48 .
27/05/2010 18:48 …
27/05/2010 18:40 345 academia.jar .class
27/05/2010 10:39 1.056 CadastroAluno$1.class
27/05/2010 10:39 663 CadastroAluno$2.class
27/05/2010 10:39 663 CadastroAluno$3.class
27/05/2010 10:39 663 CadastroAluno$4.class
27/05/2010 10:39 663 CadastroAluno$5.class
27/05/2010 10:39 5.882 CadastroAluno.class
27/05/2010 09:51 5.893 CadastroAluno.java
27/05/2010 10:39 699 CadastroFuncionario$1.class
27/05/2010 10:39 699 CadastroFuncionario$2.class
27/05/2010 10:39 699 CadastroFuncionario$3.class
27/05/2010 10:39 5.455 CadastroFuncionario.class
27/05/2010 09:51 4.867 CadastroFuncionario.java
27/05/2010 10:39 2.639 CadastroVisitantes.class
27/05/2010 09:51 2.293 CadastroVisitantes.java
27/05/2010 10:39 2.287 ForcaAtiva.class
26/05/2010 11:35 1.526 ForcaAtiva.java
27/05/2010 10:39 4.149 FramePrincipal.class
27/05/2010 10:04 3.780 FramePrincipal.java
27/05/2010 10:39 461 InfForcaAtiva.class
16/05/2010 12:54 326 InfForcaAtiva.java
27/05/2010 10:39 460 InfNutricao.class
15/05/2010 21:36 323 InfNutricao.java
27/05/2010 10:39 2.442 Informacoes.class
23/05/2010 22:49 2.499 Informacoes.java
27/05/2010 10:39 457 InfPersonalVip.class
16/05/2010 12:17 321 InfPersonalVip.java
27/05/2010 18:48 69 Manifesto.txt
27/05/2010 10:39 2.421 Personal.class
23/05/2010 22:49 1.653 Personal.java
27/05/2010 10:39 303 PrincipalMenu.class
25/05/2010 09:17 100 PrincipalMenu.java
27/05/2010 10:39 188 Sair.class
21/05/2010 23:25 89 Sair.java
27/05/2010 10:39 1.441 TelaLogar$TratarBotoesLogin.class
27/05/2010 10:39 1.910 TelaLogar.class
27/05/2010 09:55 2.357 TelaLogar.java
27/05/2010 10:39 1.377 TratarBotoesTelaAluno.class
21/05/2010 22:56 1.468 TratarBotoesTelaAluno.java
27/05/2010 10:39 1.375 TratarBotoesTelaFunc.class
21/05/2010 22:56 1.470 TratarBotoesTelaFunc.java
27/05/2010 10:39 1.377 TratarBotoesTelaVisit.class
21/05/2010 23:05 1.472 TratarBotoesTelaVisit.java
27/05/2010 10:39 471 TratarCadAluno.class
15/05/2010 20:38 323 TratarCadAluno.java
27/05/2010 10:39 488 TratarCadFunc.class
15/05/2010 21:35 341 TratarCadFunc.java
27/05/2010 10:39 483 TratarCadVis.class
15/05/2010 21:35 339 TratarCadVis.java
27/05/2010 10:39 653 TratarSaidaPrincipal.class
17/05/2010 18:52 377 TratarSaidaPrincipal.java
51 arquivo(s) 74.755 bytes
2 pasta(s) 198.755.299.328 bytes disponíveis

C:\Users\Daniel\Meus documentos\ppi - testes>jar -cfm manifesto.txt academia.jar *.class
java.io.FileNotFoundException: academia.jar (O sistema nÒo pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at java.io.FileInputStream.(FileInputStream.java:66)
at sun.tools.jar.Main.run(Main.java:131)
at sun.tools.jar.Main.main(Main.java:1022)

C:\Users\Daniel\Meus documentos\ppi - testes>[/code]
O arquivo manifesto.txt tem:

Manifest - Version 5.2 Create - by: PPI V Main-Class: PrincipalMenu

Apague este arquivo “academia.jar .class” que aparece na sua listagem, e tente usar novamente o comando que apresentei inicialmente:

jar -cfm academia.jar manifesto.txt *.class

Vejo que, no último post, você trocou a ordem dos parâmetros passados para o comando JAR. NÃO faça isso.

Veja o resultado. Dessa vez o comando está igual. Exclui aquele arquivo que você pediu “academia.jar .class”. A pior coisa em programação é isso, cara, …ficar brigando com erros…

C:\Users\Daniel\Meus documentos\ppi - testes>jar -cfm academia.jar manifesto.txt *.class java.io.IOException: invalid header field at java.util.jar.Attributes.read(Attributes.java:389) at java.util.jar.Manifest.read(Manifest.java:182) at java.util.jar.Manifest.<init>(Manifest.java:52) at sun.tools.jar.Main.run(Main.java:132) at sun.tools.jar.Main.main(Main.java:1022)

A sintaxe do seu arquivo de manifesto está com problemas. Não pode haver espaco em branco junto aos hífens contidos em cada chave, e cada chave deve ser seguida de dois pontos (":"):

[b]
Manifest-Version: 1.0
Created-by: PPI V
Main-Class: PrincipalMenu

[/b]

Não se esqueca de que a última linha do arquivo de manifesto deve estar em branco.

Como indico a última linha do manifesto em branco?

Segue arquivo de exemplo com a última linha em branco. Como o arquivo foi criado no Unix, talvez você tenha problemas em abri-lo no Windows devido à codifcacão das quebras de linha - use o WordPad em vez do Bloco do Notas para ver o conteúdo.

OK, OK!! Resolvido amigo. Muito obrigado pela atenção e paciência que teve comigo. Que Deus lhe dê em dobro.
O problema estava na formulação do manifesto. Veja o correto:

Manifest-Version: 5.2 Create-by: PPI V Main-Class: PrincipalMenu
Respeitando exatamente os espaçamentos e pontuações. VALEU.

[quote=DANIEL35]OK, OK!! Resolvido amigo. Muito obrigado pela atenção e paciência que teve comigo. Que Deus lhe dê em dobro.
O problema estava na formulação do manifesto. Veja o correto:
Manifest-Version: 5.2 Create-by: PPI V Main-Class: PrincipalMenu
Respeitando exatamente os espaçamentos e pontuações. VALEU.[/quote]