Bibliothèques communes partagées ne peuvent pas charger les classes de binaires d'application. Lorsque vous utilisez des bibliothèques communes, vous pouvez les considérer comme une connexion unidirectionnelle. Le chargeur de classe de l'application peut déléguer à des bibliothèques partagées communes, mais pas l'inverse.
Les bibliothèques communes sont implémentées en tant que leur propre chargeur de classe, elles doivent donc contenir toutes les dépendances. D'autre part, les bibliothèques privées ont leurs chemins de classes ajoutés au classpath du classloader de l'application - afin qu'ils puissent charger les classes fournies par l'application, mais ce n'est pas une bonne pratique. Par exemple, si une bibliothèque privée dépend de ClassA fournie par l'application1, elle fonctionnera très bien pour application1, mais pourrait casser l'application2 qui pourrait ne pas fournir ClassA (ou en fournir une version incompatible). Si vous avez des classes dans vos bibliothèques partagées qui dépendent des classes de votre application, je recommanderais de mettre toutes ces classes dans la bibliothèque partagée - ou de mettre toutes les classes de bibliothèques partagées dans l'application (ou WAR, etc. .). Personnellement, je préfère ce dernier - les applications autonomes sont beaucoup plus portables et moins susceptibles de se heurter à des problèmes de classloader/dépendances (c'est-à-dire que la version X requiert une dépendance X, mais que la version X2 requiert la version X + 5 ...).
Hope this helps, Andy
quelle classe ne se trouve pas? Dans quel pot se trouve la classe manquante? –
Pouvez-vous inclure la section pour les filtres globaux et filterjars? –