Packager un jar contenant des jars utilisant des jars , etc ... [JAVA] - Java - Programmation
Marsh Posté le 12-11-2003 à 19:33:42
que en plus d'être pas beau, c'est la pluspart du temps illégale.
Tu n'as pas bcp de solutions, il faut que tu mettes tes jars les un à côté des autres et que tu livres le tout sous la forme d'un zip par exemple.
Dans le manifest, tu peux indiquer les dépendances (les jars dont ton jar a besoin)
Marsh Posté le 12-11-2003 à 19:35:16
sinon, y a peut être moyen de se bidouiller un ClassLoader qui va lire les jar dans des jar
Marsh Posté le 12-11-2003 à 19:55:44
t a des packager ecrit en java qui sont pas mal , je pense a http://www.izforge.com/izpack/
Marsh Posté le 12-11-2003 à 19:55:47
en fait, je crois que je comprend pas tout !
Dans ma classe principale Appli, j'ai une variable membre instance de Classe1, Classe1 qui se trouve dans un jar à part monjar.jar
Et c'est cette Classe1 qu'il ne trouve pas. ALors que dans mon manifest, j'ai bien précisé monjar.jar dans le Class-Path
Marsh Posté le 12-11-2003 à 20:09:55
ben oui mais est ce que au moment où tu lance ton appli, monjar.jar est dans le classpath ?
Marsh Posté le 12-11-2003 à 20:14:12
benou a écrit : ben oui mais est ce que au moment où tu lance ton appli, monjar.jar est dans le classpath ? |
non, en effet, et je ne sais pas comment faire puisque monjar.jar est dans le jar global de mon appli (monappli.jar)
je pensais qu'en mettant monjar.jar dans la section Class-Path du manifest de monappli.jar, ça suffirait
Marsh Posté le 12-11-2003 à 20:15:32
noldor a écrit : |
ben c'est ce que je te disais quand je disais qu'il fallait que le jar soit "à côté" de ton autre jar, pas dedans
Marsh Posté le 12-11-2003 à 20:16:34
benou a écrit : |
ah oui, OK, je comprends mieux maintenant, merci
mais y a vraiment pas de moyen d'en faire un jar quand même au final ?
Marsh Posté le 12-11-2003 à 20:23:15
faut bien mettre des espaces entre les .jar dans ton manifest:
Class-Path: lib/skinlf.jar lib/nanoxml.jar lib/jython.jar lib/log4j.jar
ne pas utiliser de ',' ou de ';'
A+
Marsh Posté le 12-11-2003 à 20:29:45
veryfree a écrit : faut bien mettre des espaces entre les .jar dans ton manifest: |
tu veux dire que tu es arrivé à mattre ces jars dans le jar ??
et j'aurais dit des conneries depuis tout à l'heure ?
Marsh Posté le 12-11-2003 à 20:32:50
non non;
je dit juste que mes jars sont dans un repertoire "lib" et que mon jar principal les trouve grace a cette entrée 'Class-Path: lib/skinlf.jar lib/nanoxml.jar lib/jython.jar lib/log4j.jar' de son fichier manifest.
je reste ds l'idée qu'il cherche juste a mettre plusieurs jars ds une distrib - ce que 90% des projet java font sans probleme - alors on peux se passer de tout mettre dans un meme jar
d'autant que ca pose souvent des problemes de licence comme tu la deja dit
Marsh Posté le 12-11-2003 à 20:34:14
ouais mais quand même ... je trouve ca dommage qu'on puisse pas imbriquer les jars
Marsh Posté le 12-11-2003 à 20:35:54
oui, il me semble avoir lu ici que les "war" etait capable de le faire (chui plus sur de l'extention d'un coup )
sinon, si tout est de la meme licence, tu dezip tout et tu fait un jar qui englobe tout et on en parle plus
Marsh Posté le 12-11-2003 à 20:39:43
veryfree a écrit : oui, il me semble avoir lu ici que les "war" etait capable de le faire (chui plus sur de l'extention d'un coup ) |
bah oui ... mais bon, je pense que les serveur d'application font tous comme tomcat : ils dézippent le war et ajoutent les jar se trouvant dans le rep WEB-INF/lib dans le classpath
mais mon idée de ClassLoader me parait pas impossible à réaliser
Marsh Posté le 12-11-2003 à 20:41:10
15 min plus tard...
benou reviens avec un code de 200 lignes
Marsh Posté le 12-11-2003 à 20:46:12
veryfree a écrit : 15 min plus tard... |
heu nan ... là je suis encore au boulot
mais je garde l'idée ... ca pourrait être un bon exercice sur ClassLoader (que je connais pas bien).
D'un autre côté, je me dis que j'en ai jamais entendu parlé => c'est surement que ca existe pas => soit personne y a jamais pensé et je suis un génie, soit (et c'est bcp plus probable) y a un hic que je ne vois pas et c'est pas possible
Marsh Posté le 13-11-2003 à 00:51:23
ReplyMarsh Posté le 13-11-2003 à 08:45:58
Reply
Marsh Posté le 12-11-2003 à 19:30:30
Je dois packager (en ligne de commande) une appli contenant des jars, ces jars utilisant d'autres jars, etc ...
Et j'ai un peu de mal, je me tape sans cesse des java.lang.NoClassDefFoundError
La solution de faicilité serait de déjarrer le tout, mais c'est pas très beau. Qu'en pensez-vous ?