Websphere NoClassDefFoundError:在Web Sphere liberty配置文件中

Websphere NoClassDefFoundError:在Web Sphere liberty配置文件中,websphere,websphere-liberty,Websphere,Websphere Liberty,我已经在dropins文件夹中部署了一个ear,ear中的一个war文件引用了我保存在Shared->config->lib->global文件夹外的jar。我保存在全局文件夹中的外部jar再次引用了驻留在ear中的几个jar,这次我得到了java.lang.NoClassDefFoundError 你能建议一下如何提供参考吗 server.xml <webApplication contextRoot="/xyz" id="zyx" location="xyz.ear" name="xy

我已经在dropins文件夹中部署了一个ear,ear中的一个war文件引用了我保存在Shared->config->lib->global文件夹外的jar。我保存在全局文件夹中的外部jar再次引用了驻留在ear中的几个jar,这次我得到了java.lang.NoClassDefFoundError

你能建议一下如何提供参考吗

server.xml

<webApplication contextRoot="/xyz" id="zyx" location="xyz.ear" name="xyz" type="ear">
<classloader commonLibraryRef="global,filterjars"></classloader>
</webApplication>

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

公共库作为自己的类加载器实现,因此它们必须包含所有依赖项

另一方面,私有库将它们的类路径附加到应用程序类加载器的类路径中,这样它们就可以加载应用程序提供的类,但这不是一个好的实践。例如,如果一个私有库依赖于application1提供的ClassA,那么它对于application1来说可以正常工作,但可能会在application2中中断,而application2可能不提供ClassA,或者可能提供不兼容的ClassA版本

如果共享库中的类依赖于应用程序中的类,我建议将所有这些类都放在共享库中,或者将所有共享库类都放在应用程序或WAR中,等等。。我个人更喜欢后者——自包含的应用程序更具可移植性,不太可能遇到类加载器/依赖性问题,即app1需要某些依赖性的版本X,但app2需要版本X+5

希望这有帮助,
Andy

找不到什么类?缺少的类位于哪个jar中?能否包含全局和FilterJAR部分?