jar, classpath et librairies
Salut,
Tout d'abord, voici ce que je voudrais : une application à laquelle on puisse rajouter des librairies simplement en mettant le .jar dans le répertoire lib. En effet, l'application supportera des plugins, et les plugins auront éventuellement besoin de librairies.
Ma première idée était donc dans l'attribut "Class-Path" du manifest du jar exécutable de définir par exemple un lib/*.jar (voir ce post), ce qui apparemment n'est pas possible.
Donc il faut définir le classpath à l'exécution dans la ligne de commande.
Sauf qu'on ne connaît pas forcément à l'avance toutes les librairies utilisées (les plugins pourront éventuellement en rajouter).
Au départ je pensais qu'il n'y avait pas de problème, il suffit de faire:
Code:
java -cp .:monjar.jar:lib/*.jar monpackage.monsouspackage.MainClass
D'ailleurs j'avais testé ca fonctionne très bien (je suis sous linux)...
EDIT: en fait même sous linux s'il y a plusieurs librairies le *.jar est remplacé par "fichier1.jar fichier2.jar..." sans séparer par des ':', donc ça ne marche pas non plus... Quand j'avais testé il n'y en avait qu'une (lol)...
Mais au travail (là où je suis en stage), ils utilisent des ordinateurs avec windows, et en programmant (quelque chose qui n'avait rien à voir), je me suis aperçu que le *.jar ne fonctionnait pas en paramètre de -cp de java... (après avoir galéré 5 minutes avant de comprendre que sous dos le séparateur des répertoires est ; et non :, enfin bref).
Donc comment est-il possible de pouvoir rajouter des .jar dans le répertoire lib, qui soient reconnus à l'exécution sans changer les paramètres d'appels ni la variable d'environnement CLASSPATH, et que ça fonctionne sous toutes les plateformes (au moins Linux, Mac et Windows -PS: y'en a d'autres?-) ?
Merci d'avance