2017-08-01 86 views
0

我已经在dropins文件夹内部署了一个耳朵,并且来自耳朵的一个war文件引用了我保存在文件夹外部的jar(Shared-> config-> lib-> global) 。这是我保持全球文件夹外部罐再次提到它驻留在耳几个罐子,这个时候我收到“java.lang.NoClassDefFoundError”NoClassDefFoundError:在Web Sphere Liberty Profile

能否请你建议如何提供参考。

的server.xml

+0

没有找到什么课?失踪班的位置在哪里? –

+0

你可以包含全局和filterjars的部分吗? –

回答

1

普通的共享库不能从应用程序二进制文件加载类。使用通用库时,您可以将它们视为单向连接。 应用程序的类加载器可以委托给公共共享库,但不是相反。

通用库被实现为它们自己的类加载器,因此它们必须包含所有的依赖关系。

另一方面,私有库的类路径附加到应用程序类加载器的类路径 - 因此它们可以加载应用程序提供的类,但这不是一个好习惯。例如,如果私有库依赖于application1提供的ClassA,它将对application1工作得很好,但可能会在可能不提供ClassA(或可能提供它的不兼容版本)的application2中中断。

如果您的共享库中有依赖应用程序中的类的类,我会推荐将所有这些类放在共享库中 - 或将所有共享库类放入应用程序中(或WAR等) )。我个人更喜欢后者 - 自包含的应用程序更便于携带,并且不太可能遇到类加载器/依赖项问题(即app1需要某些依赖项的X版本,但app2需要X + 5版本...)。

希望这有助于 安迪

相关问题