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:
- verifique se fazer o que você pretende fazer não fere nenhuma licença de uso dos softwares envolvidos
- 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: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=5)
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: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=5)
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)