2017-08-01 2 views
0

J'ai déployé une oreille dans le dossier dropins et l'un des fichiers war de l'oreille fait référence au fichier jar que j'ai gardé en dehors du dossier (Shared-> config-> lib-> global) . jar externes que je gardais dossier global est à nouveau quelques référaient pot qui se trouve dans l'oreille et cette fois je reçois « java.lang.NoClassDefFoundError »NoClassDefFoundError: dans WebSphère liberty Profil

Pouvez-vous s'il vous plaît suggérer comment donner référence.

server.xml

+0

quelle classe ne se trouve pas? Dans quel pot se trouve la classe manquante? –

+0

Pouvez-vous inclure la section pour les filtres globaux et filterjars? –

Répondre

1

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