J'ai une application Web héritée en cours d'exécution à Tomcat 5.0. P>
Cette application Web a deux pots dans web-inf / lib em>, disons La dernière version de cette application nécessite Dans Eclipse, la solution simple est de cliquer avec le bouton droit de la souris sur votre Projet em>, cliquez sur Propriétés em>> piste construit Java em >> em> commande et Exporter em> et déplacer foo-2.0.jar strong> ci-dessus bar-2.0.jar strong> il est donc résolu en premier. P>
Comment accomplir ce type de classe de classe de classe pour des pots dans web-inf / lib em> à tomcat? p>
7 Réponses :
Vous ne le faites pas, car cette fonctionnalité n'est pas disponible à Tomcat. Si FOO-1.0.JAR et FOO-2.0.JAR sont nécessaires dans le type de classe en même temps, vous aurez besoin de la réorganisation majeure de la classe de classe. P>
Si BAR-2.0 peut fonctionner avec FOO-2.0, alors la meilleure chose à faire serait de reconstruire la barre-2.0 vous-même sans foo-1.0.jar à l'intérieur de celui-ci. P>
Il n'y a aucun moyen de savoir si Bar-2.0 fonctionne avec FOO-2.0 ou non, et c'est une bibliothèque massive et binaire sans cas de test.
Je crois que la solution que vous utilisez a la barre 2.0 en cours d'exécution avec FOO-2.0, juste d'une sorte de rond-point.
bande
Je pense vraiment que c'est la meilleure suggestion. Remballenage de votre bar-2.0.jar, sinon vous ne demandez que des maux de tête sur la route.
Il est possible de définir la parcelle de classe dans la pêche principale du pot. http://java.sun.com/developer/books/ JavaProgrammation / Jar / Basics / Manifeste.HTML Je ne peux pas vraiment promettre que cela résoudra le problème, mais je peux valoir la peine d'essayer. P>
C'est un peu hacky mais pourrait fonctionner. Changez le nom de FOO-2.0.JAR pour être alphabétiquement en avance sur la bar-2.0.jar, dites AFOO-2.0.JAR. P>
La précision de la classe de classement de Tomcat 5 pour WebApps est grossièrement comme suit: d'abord le bootstrap / system ( afin d'obtenir Le pot n'est pas chargé dans l'ordre alphabétique de leur nom. Au moins, il n'y a pas de spécification qui dit cela. Les renommer pour changer la commande de nom de fichier alphabétique n'a aucun sens. P> jre / lib code>, puis les classes internes de Tomcat), puis les bibliothèques WebApp (premier
web-inf / classes code>, puis
Web -Inf / lib code>), alors les bibliothèques communes (premier
tomcat / commun code>, alors
tomcat / lib code>) et enfin les bibliothèques partagées WebApp (
Tomcat / partagé code>). P>
foo-2.0.jar code> chargé avant em>
bar-2.0.jar code>, meilleur ce que vous pouvez faire est de déplacer
Bar-2.0.jar code> à partir de
web-inf / lib code> à
tomcat / commun code> ou
tomcat / partagé code>. P>.
Georgy a répondu en premier, alors j'ai accepté sa soumission, mais ce que vous décrivez est exactement ce que j'ai fait pour résoudre le problème. Votre lien était particulièrement utile. J'encourage tout le monde à voter cette réponse b>.
Je vous en prie. Bien que je signale que les réponses ici sont pas b> par défaut commandées par la date de réponse. Au moment de la rédaction, vous pouvez voir à la topre de l'utilisateur Avatar que j'ai répondu à cette question il y a 23 minutes et Georgy il y a 15 minutes. Vous pouvez modifier la commande par l'un des trois onglets Oilest code>,
le plus récent code> et
votes code> droite des réponses. La valeur par défaut est
votes code>.
Et, dans l'info-bulle, vous pouvez voir l'heure exacte. Donc j'étais en fait d'abord: o
Chargeuse de classe Comment pour Tomcat 8 Tomcat.apache.org/ Tomcat-8.0-Doc / Class-Loader-Howto.html
mettre foo-1.0.jar à $ cataline_home / commun / endossé (ou tout autre endroit où il sera chargé après FOO-2.0.jar). p>
avoir FOO-2.0.JAR avant la barre-2.0.jar, mettez à jour la barre-2.0.jar avec le contenu de FOO-2.0.jar (écraser déjà contenue .Class) et supprimer FOO-2.0.jar de la guerre . p>
-cp A.jar: B.jar a l'effet que la teneur en A.jar est comme une couche sur B.jar. Donc, vous obtenez le même effet avec le contenu de B.jar avec A.jar. P>