Gerar um .jar[RESOLVIDO]

11 respostas
DANIEL35

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.

11 Respostas

R

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.

DANIEL35

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)

R

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.

DANIEL35

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:

Microsoft Windows [versão 6.0.6000]
Copyright (c) 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    <DIR>          .
27/05/2010  18:48    <DIR>          ..
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.<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)

C:\Users\Daniel\Meus documentos\ppi - testes>
O arquivo manifesto.txt tem:
Manifest - Version 5.2
Create - by: PPI V
Main-Class: PrincipalMenu
R

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.

DANIEL35

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)

R

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.

DANIEL35

Como indico a última linha do manifesto em branco?

R

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.

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.

DANIEL35

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.

Criado 27 de maio de 2010
Ultima resposta 29 de mai. de 2010
Respostas 11
Participantes 2