Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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é big_smile

P.S. le driver aurait plus sa place dans un répertoire lib wink

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 big_smile

tekman54000 a écrit :

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 big_smile)
\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