J'ai une application web dans laquelle les dépendances tirent dans deux pots appelés:
lorsque je conditionne le WAR, j'ai ces deux dans le répertoire WEB-INF/lib, ma question est que l'application est en cours d'exécution et pourquoi je n'obtiendrai aucun problème car apparemment j'ai les mêmes classes dans les deux pots et il devrait y avoir des problèmes droite?
Pour Java peu importe le nombre de versions d'une classe que vous fournissez. Le chargeur de classe par défaut choisira simplement la première sur le chemin de classe qu'il peut trouver.
Étant donné que vous pouvez exécuter l'application sans erreur, cela signifie l'une des choses suivantes:
si javassist-3.9.0.GA.jar est le premier sur le chemin de classe: votre application ne repose pas sur de nouvelles API ou corrections de bogues dans javassist-3.20.0-GA.jar Aucune API que vous avez utilisée de cette bibliothèque n'a également changé entre ces versions ( qu'une bibliothèque ne devrait pas faire entre les versions mineures)
si javassist-3.20.0-GA.jar est le premier sur le chemin de classe: la bibliothèque est rétrocompatible
Je suggère:
Répondre à "des suggestions sur la façon de résoudre ce problème?" jetez un oeil à Résolution des conflits en utilisant l'arbre de dépendance . Avec la commande mvn dependency:tree
vous pourrez savoir d'où vient toute dépendance. Lorsque vous savez quels artefacts dépendent de javassist, vous pouvez ajouter une entrée d'exclusion pour éviter l'une des versions de javassist.