Salut,
Décidément en ce moment j'ai des problèmes avec les jars et le classpath.
Quand on définit dans le manifest d'un .jar un attribut Main-Class et un attribut Class-Path, et qu'on appelle notre jar avec , tout est ok.
Maintenant (suite à ce post), si on a besoin d'un nombre indéterminé (et dont on ne connait pas le nom) des librairies .jar, il faut les écrire en ligne de commande:
java -cp malibrairie1.jar:malibrairie2.jar ...
Le problème, c'est que si on fait ça, on ne peut plus utiliser l'attribut Main-Class du manifest, sinon le classpath indiqué n'est pas pris en compte. Je m'explique:
Imaginons un jar monjar.jar qui contient un attribut Main-Class qui vaut monpackage.MainClass.
Soit on fait:
java -cp unclasspath -jar monjar.jar
la classe main est bien utilisée, mais le classpath utilisé est celui inscrit dans le manifest du jar, dans l'attribut "Class-Path" (même si celui-ci n'est pas défini, auquel cas le class-path est vide).
Soit on fait:
java -cp monjar.jar:unclasspath monpackage.MainClass
auquel cas on est obligé d'ajouter notre jar (sensé être exécutable) au classpath et indiquer la classe main manuellement pour lancer le programme, ce qui est un peu lourd (je trouve)... et du coup le .jar n'est pas "exécutable"...
Avez-vous une solution?
Merci d'avance...
Partager