[Resolvido] Como incluir jar (de um framework) num unico jar da minha aplicação?

9 respostas
dreampeppers99

mine:

Plataform : Windows XP 2SP (yes, i´m newbie)
JDK : 6
IDE : Eclipse 3.2
External Framework : JMF

Ok, I´m doing a multimedia project (using RTP to transfer data) and I saw that the Sun had a framework called JMF 2.1 (that was uncontinued) and I decide to learn how this “framework works”, I study the architecture, the main classes (almost all) and so.

Then I download the .zip (all plataform), unzip and create a folder structure.
And the jars are on the …\jmf-2_1_1e-alljava\JMF-2.1.1e\lib.
Right!!!
So I start a new project (java project) on the eclipse 3.2, and I choose all this jar like a external jars. Realy I made a player that works, but when I try to generate a single file .jar, the eclipse generate a file with the 32K, I want to know how can I create a single .jar with all depency (no matter size)?

It´s just to run this application without need to set a CLASSPATH or file build. I want to generate a single .jar (with 4MB or more) and execute in any machine ( with jdk) java -jar myapp.jar and it works, it is possible ? How can I do this with the eclipse ?

And thanks by you reading this.

9 Respostas

ViniGodoy

Tem absolutamente todo o código fonte dentro de um .jar?

Ou precisa que o .jar contenha outros .jar dentro? Se precisa, não tem como fazer diretamente no java. A única forma seria implementando seu próprio class loader - o que pra esse caso, não é uma tarefa fácil. Eu já vi essa implementação na Internet, mas não me lembro em qual site.

dreampeppers99

ViniGodoy:
Tem absolutamente todo o código fonte dentro de um .jar?

Ou precisa que o .jar contenha outros .jar dentro? Se precisa, não tem como fazer diretamente no java. A única forma seria implementando seu próprio class loader - o que pra esse caso, não é uma tarefa fácil. Eu já vi essa implementação na Internet, mas não me lembro em qual site.

um jar que contenha todos os outros jar dentros (os do lib do JFM). mas porque não gera um só arquivo jar com as dependencias e pronto?

dreampeppers99

Parece que na Web basta criar uma pasta chamada lib, que o “compilador” já sabe, e em casos de aplicações não web??? Desculpe posso estar falando bobeira. Mas é apenas uma dúvida a idéia é a mesma do topico inicial.

Daniel_Quirino_Olive

Você pode tentar usar o JarJar (http://www.tonicsystems.com/products/jarjar/), mas antes disso:

  1. verifique se fazer o que você pretende fazer não fere nenhuma licença de uso dos softwares envolvidos
  2. verifique se o JarJar consegue fazer isso funcionar direitinho para os softwares envolvidos.

Eu usei o JarJar para empacotar uma versão do DynAOP que fosse compatível com Hibernate 3.x e foi uma beleza :slight_smile:

marcelo_emanoel

Existe a possibilidade de empacotar todo o projeto num zip com as dependencias… e o seu .jar usar o manifest pra dizer o que procurar e onde procurar… daí o cliente soh teria o trabalho de extrair os arquivos .zip e fazer o java -jar seuJar.jar

procura sobre lib em manifest q vc vai entender o que eu to falando :slight_smile:

dreampeppers99

Obrigado a todos, vou dar uma outra pesquisada e se tiver alguma dúvida volto aqui.

Luiz_Aguiar

Procure tbm:
FatJar para eclipse
JarTools para IntelliJ

dreampeppers99

Porque eu não posso simplesmente …

Primeiro abro o jar com um Zipador qualquer, crio uma pasta na raiz chamada lib. Copio todos os jar para dentro da mesma.
Ai simplesmente alterar o MANIFEST.MF

Class-Path: lib/jmf.jar lib/jmfRTP.jar

Isto só não resolve o problema?
Aqui parece dizer que não : (Note: The Class-Path …)
http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html

Porque ???

dreampeppers99

De fato o FatJar para eclipse já resolve (ainda não testei)

Criado 7 de maio de 2007
Ultima resposta 8 de mai. de 2007
Respostas 9
Participantes 5