2017-08-01 64 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版本...)。

希望這有助於 安迪

相關問題