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]