Criação de jars - problemas

3 respostas
xFate

Oi pessoal, tenho diversas dúvidas sobre como criar arquivos redistribuíveis do aplicativo que estou fazendo. É um trabalho da faculdade, na verdade.

Enfim, estou usando o Eclipse, aí fui usar o recurso export dele e criei meu jar. Importei uma biblioteca com uma nova aparência pra swing e uma jgoodies, do swing também. Criando pelo eclipse ele cria um arquivo funcional, porém gera exceção dizendo que as classes usadas por esses pacotes não existem (em resumo, como se não tivesse havido inclusão nenhuma de pacote). Aí fui criar um jar na mão, seguindo os seguintes passos:

Manifest-Version: 1.0 Main-Class: pizzaria.Main Created-By: 1.6 (Sun Microsystems Inc.)

  1. Criei uma pasta qualquer.
  2. Copiei os pacotes com os .class para dentro dessa pasta.
  3. Criei uma pasta META-INF com o arquivo MANISFEST.MF como acima.
  4. Acessei via prompt de comando a pasta do projeto.
  5. executei a seguinte linha:
    jar -cvfm “pizzaria.jar” META-INF\MANIFEST.MF *

Mas ele diz que falha na hora de carregar a classe main…

Peço paciência, não tinha me aventurado na criação de jars até então x)

Obrigado

3 Respostas

CintiaDR

Eu não sei mexer diretamente em com esse arquivo, mas vc pesquisou o fórum do GUJ?

(Mas como eu uso o Eclipse como IDE, usei um plugin chamado FatJar – qualquer coisa, pesquise no fórum que trilhões de posts devem falar a respeito dele)

tRuNkSnEt

Vejo que você está usando libs de terceiros, nesse caso é necesssario acrescentar alguns topicos nessa lista de açoes que você fez:

MANISFEST.INF

Manifest-Version: 1.0
Main-Class: pizzaria.Main
Class-Path: lib/animation-1.1.3.jar
  lib/firebirdsql.jar
  lib/forms-1.0.6.jar
  lib/looks-1.3.2.jar
  lib/jasperreports-1.2.0.jar
Created-By: 1.6 (Sun Microsystems Inc.)
  1. Criei uma pasta qualquer.

  2. Copiei os pacotes com os .class para dentro dessa pasta.

  3. Crie uma pasta dentro da pasta base chamada lib e adicione todas as libs de terceiros que você está usando.

  4. Criei uma pasta META-INF com o arquivo MANISFEST.MF como acima.
    Obs: Adicione uma linha com o nome Class-Path e informe linha por linhas as libs que você está usando. O detalhe é que a cada linha nova de dois espaços e informe a caminho da lib. (Reparou que a segunda lib esta em uma nova linha e dois espaços da margem?)

  5. Acessei via prompt de comando a pasta do projeto.
    Ex:
    $: cd /caminho/da/minha/pasta/do/projeto

  6. executei a seguinte linha:
    jar -cvfm “pizzaria.jar” META-INF\MANIFEST.MF .
    (Coloquei um ponto(.) no final da linha pedindo para compactar tudo do diretório corrente)

  7. Agora é so executar o .jar

Para esse jar funcionar você devera ter uma estrutura de diretório parecida com o que temos abaixo:

MeuProjeto
   - pizzaria
         - Main.class
   - lib
           -animation-1.1.3.jar
           -firebirdsql.jar
           -forms-1.0.6.jar
           -looks-1.3.2.jar
           -jasperreports-1.2.0.jar
    - Meta-INF
            -MANIFEST.INF
    pizzaria.jar

Nessa árvore é só executar o pizzaria.jar dentro desse diretório do seu projeto que deve funcionar.

Tenta ai e me fala!

xFate

Realmente era isso!! Muito obrigado, tá tudo certo :wink:

Mas eu tinha já conseguido através de um outro método. Peguei um programa chamado “maven” que faz gerenciamento de projetos e tem integração com o Eclipse, ele exporta um .jar com os pacotes todos declarados no manifest. Tem também uma outra ferramenta, um plugin do eclipse que é bem mais simples, chamado FatJar (como o amigo acima indicou ^^), ele fica na própria janela de exportação do Eclipse, super fácil!

Obrigado pela ajuda :wink:

Criado 19 de outubro de 2007
Ultima resposta 20 de out. de 2007
Respostas 3
Participantes 3