Estou querendo criar um .jar só que uma das classes que eu criei importa org.apache.commons.digester.Digester, que é um .jar.
Em um artigo do Samuel Mota, ele fala que devemos relacioná-los no atributo Class-Path do manifest. Fiz e não funcionau.
Em outro artigo, do Marcos Silva Pereira, ele fala que basta colocarmos em JAVA_HOME\jre\lib\ext que o jdk os reconheceria. Também não deu certo.
Alguem ja fez isto e deu certo?
Como criar um .jar que utilize outro .jar
7 Respostas
Nos ajude a te ajudar, nos diga exatamente o que você está fazendo e qual a(s) mensagem(ns) de erro(s) 
OK Paulo,
Tenho um arquivo xml e dele devo extrair um relatorio.doc.
Com o eclipse fiz duas classes. Uma classe com a interface grafica e a outra que faz o trabalho de ler o arquivo xml e gerar o .doc. A segunda classe importa org.apache.commons.digester.Digester que é um jar adicionado em libraries, Java Build Path, do Eclipse. Até ai beleza pois funciona perfeitamente.
Só que preciso distribuir esse aplicativo para outras máquinas atraves de uma jar executavel.
O eclipse me da a possibilidade de gerar um jar atraves do Export. Só que ele gera o jar mas quando vou executar dá erro por não encontrar a classse digester, que se encontra em outro jar. Já coloquei os jar’s do digester direto no classpath mas o jdk não as encontra.
Paulo, só um detalhe.
Via DOS, descompactei os 4 .jar’s que fazem com com que o digester funcione. com o comando jar cvmf manif Hello.jar Principal.class br\com\tabajara*.class br\com\tabajara2*.class br\com\tabajaraN+1*.class. Consegui criar um jar que funcionar perfeitamente. Só que da um trabalho danado. E qualquer manutenção no código tenho que refazer tudo de novo.
O que eu quero é poder criar um jar que referencie outro jar. De forma que se eu tiver que alterar o código isso seja feita de uma forma simples. Sem que eu tenha que criar na mão, via DOS, uma pancada de diretórios.
Como posso passar o código fonte para vc da uma olhada?
Segue um exemplo, nao esqueça que a ultima linha do seu manifest deve ser em branco…
Manifest-Version: 1.0
Name: NomeDaAplicacao
Main-Class: pacote.da.class.main.classe_main
Class-path: lib\jar_necessario1.jar lib\jar_necessario2.jar
Created-By: Guilherme I. Keller
Sendo que no mesmo nivel do seu JAR Aplicação deve existir uma pasta lib,
com os seus jar’s necessarios.
beleza ? nao conseguindo ou conseguindo posta pra avisa…
até…
Eu havia tentado conforme o artigo do Samuel Mota, http://www.guj.com.br/java.artigo.42.3.guj . Só que ele fala para colocar Class-Path nome_do_jar.jar lib\jar1.jar lib\jarN.jar.
Coloquei como vc disse:
Manifest-Version: 1.0
Main-Class: PrincipalRel
Classpath: lib\commons-digester-1.3.jar lib\commons-collections-2.1.jar lib\commons-logging-1.0.2.jar lib\commons-beanutils-bean-collections.jar lib\commons-beanutils-core.jar lib\commons-beanutils-1.5.jar e mesmo assim da erro, java.lang.NoClassDefFoundError: org\apache\commons\digester\Digester, ou seja ele não localiza o jar do digester.
Obs: A pasta lib está no mesmo diretório do jar.
Quem sabe você esta esquecendo de algum detalhe…
e dentro do lib os jar’s necessarios
*tente fazer um CTRL+C / CTRL+V do manifest que eu colei de exemplo, mudando as propriedades necessarias, é claro
**nao esqueça que a ultima linha do manifest deve ser em branco!
Manifest-Version: 1.0
Name: Levantamento_Selecao
Main-Class: PrincipalNova
Class-path: Levant_Selecao.jar lib\classes12.jar lib\commons-digester-1.3.jar
lib\commons-collections-2.1.jar lib\commons-logging-1.0.2.jar
lib\commons-beanutils-bean-collections.jar lib\commons-beanutils-core.jar
lib\commons-beanutils-1.5.jar
Created-By: Luiz Ronaldo O. Melo