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

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.

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.

[quote=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.[/quote]

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?

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.

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:

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:

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

Procure tbm:
FatJar para eclipse
JarTools para IntelliJ

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 ???

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