Pages : 1
#1 Le 01/11/2007, à 22:05
- tekman54000
inclure jar dans jar :)
Bonjour a tous,
Je suis en train de faire un petit script en java qui me permettra de faire quelques ecritures disque en fonction du contenu d'une base de donnée...
Cependant, le script marche impec sous eclipse, mais lorsque je veux l'exporter en jar pour etre completement independant, il ne trouve pas le driver mysql-connector...
Mon jar est composé de :
/
/bin -> driver JDBC MYSQL dedans
/meta-inf
/sources
le manifest est :
Manifest-Version: 1.0
Main-Class: sources.main
Class-Path: bin/mysql-connector-java-5.0.5-bin.jar
Je ne comprends pas pourquoi lorsque le lance mon jar, il ne trouve pas le driver dans bin......
si quelqu'un a une solution je suis plus que preneur!!
Merci d'avance.
------------------------------------------------------------------------------------------------
"The day Microsoft makes something that doesn’t suck is probably the day they start making vacuum cleaners" Ernst Jan Plugge
------------------------------------------------------------------------------------------------
Hors ligne
#2 Le 01/11/2007, à 23:07
- Martopioche
Re : inclure jar dans jar :)
Rhalala, les bonheurs des manifests...
Bon, je suis un peu rouillé sur les constructions à la mano et ça fait un moment que j'ai pas fait de jar. C'est sûr, ce qu'il y a de bien avec Eclipse, c'est qu'en 2 clicks, les dépendances sont correctement incluses dans le classpath. Mais le déploiement...
Si je comprends bien, tu montre ici le contenu du jar. Par rapport a un ancien jar que j'ai, je dirai que ton appli essaie de trouver mysql.jar dans un repertoire bin qui est un sous répertoire de celui ou est ton jar...
Oki voici ce qu'elle doit attendre :
/
/tonAppli.jar
/bin/mysql.jar
Essaie de créer cette arbo pour voir.
Après... Heu, je suis trop rouillé
P.S. le driver aurait plus sa place dans un répertoire lib
Hors ligne
#3 Le 02/11/2007, à 09:28
- tekman54000
Re : inclure jar dans jar :)
ola j'ai pas tout compris surtout le :
Si je comprends bien, tu montre ici le contenu du jar. Par rapport a un ancien jar que j'ai, je dirai que ton appli essaie de trouver mysql.jar dans un repertoire bin qui est un sous répertoire de celui ou est ton jar...
lol
Je dirais (tu me dis si ca te semble etre la meme chose... lol
J'ai un jar test.jar qui contient un dossier bin, un meta-inf et un sources...
Je veux placer mon driver jdbc dans bin qui est dans test.jar
je sais que le dirver devrait etre au chaud dans le systeme mais le truc c'est que je veux m'affranchir des problemes lorsqu'un pc n'a pas le driver.
A moins que tu n'es une autre solution plus simple et moins contraignante je vois pas trop comment faire... mais bon viva java...lol
------------------------------------------------------------------------------------------------
"The day Microsoft makes something that doesn’t suck is probably the day they start making vacuum cleaners" Ernst Jan Plugge
------------------------------------------------------------------------------------------------
Hors ligne
#4 Le 02/11/2007, à 09:59
- Der-3
Re : inclure jar dans jar :)
Salut, faut utiliser Fat Jar http://fjep.sourceforge.net/
Antec P182 / Asus P5N-E SLI / Intel Core 2 Duo E8440 / G.Skill Kit Extreme2 4 x 1 Go PC6400 PK / MSI Geforce 8800 GT 512 Mo / 3 * DD 500 Go
Hors ligne
#5 Le 02/11/2007, à 10:08
- tekman54000
Re : inclure jar dans jar :)
ALELUIAAAAAAAAAAA merci beaucouppppppp ca fait plaisir depuis le temps que je cherchais ca!!!!! merci !!!
------------------------------------------------------------------------------------------------
"The day Microsoft makes something that doesn’t suck is probably the day they start making vacuum cleaners" Ernst Jan Plugge
------------------------------------------------------------------------------------------------
Hors ligne
#6 Le 02/11/2007, à 13:58
- Martopioche
Re : inclure jar dans jar :)
Lol, ok, j'ai dut pas être très claire
je sais que le dirver devrait etre au chaud dans le systeme mais le truc c'est que je veux m'affranchir des problemes lorsqu'un pc n'a pas le driver.
A moins que tu n'es une autre solution plus simple et moins contraignante je vois pas trop comment faire... mais bon viva java...lol
Oui et non...
Le fait est qu'une dépendance ne doit pas être enfermée dans un jar pour plusieurs raisons, contestables quand tu fait ton petit programme dans ton coin, mais fondamentales dans d'autres cas :
Tu utilise une dépendance avec une version, et surtout dans le cas d'une BDD, avec la connexion vers une BDD (MySQL dans ton cas). Quid de l'incompatibilité (j'ai eu la cas avec Oracle où dans certains cas, il fallait utiliser une autre version), de l'évolution, de la demande de l'utilisateur d'utiliser une autre BDD...
Oui, l'idéal est que ces bibliothèques communes soient dans le système mais comme tu dit, tu ne peux avoir aucune garantie de leur présence.
La dernière fois où j'ai distribué une application java comme ça, en fait je distribuais un zip contenant :
\startup.bat (windows)
\startup.sh (Nunux)
\bin\monArchive.jar
\bin\mesDependances.jar (autant que de dépendances, oui ce devrait etre dans un .lib )
\fichierDeConfiguration.properties (qui externalise la configuration : déclaration du driver, etc, etc...)
\doc (pour la documentation)
Comme ça, tu est affranchi des dépendances du PC tout en autorisant une souplesse.
Sinon, j'ai jeté un zyeux sur FatJar. C'est en effet pratique pour un truc fait vite fait bien fait histoire de ne pas avoir à dupliquer ce que Eclipse fait déjà. Sauf que je préfère quand même le bon vieux scripe ant ou même maintenant Maven pour gérer le tout. Au moins, avec Maven on s'affranchit de toutes les dépendances extérieurs au code (il m'arrive de coder un même projet avec plusieurs IDE).
Hors ligne
Pages : 1