2016-01-21 104 views
0

我們有一個生產服務器這是一個WebSphere實例,我們複製一個jar(比如說,c.jar這已經是在現有的EAR,現在重寫),以EAR這已經部署了一個熱修復。 我有A類,在同一罐是指c.jar B級,並且在裝載A類,B類是無法找到並導致NoClassFoundError。 服務器中的熱部署被禁用。但是,重新啓動服務器A後,能夠找到B.我們缺少的任何屬性?爲什麼B類雖然存在於同一個罐子裏,卻找不到,但重新啓動後卻能找到。另外,在複製jar之前,舊c.jar可以正常工作,加載類A和類B.我們使用的是6.1類加載問題在WebSphere

+0

你有沒有重新更改後的應用程序?看到這裏 - http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/trun_app_hotupgrade_app.html?lang=en一些更多的細節。不建議直接複製罐子。現在6.1也不在支持之列了。你應該遷移到更新的版本。 – Gas

+0

它重新啓動後工作正常,但爲什麼類加載問題出現儘管類存在於jar文件中。但是,重啓後它工作正常 –

回答

0

當應用服務器啓動創建你在部署的應用程序的類文件WAS JVM實例,使其在運行時可用。在您探索應用程序時,其他類將被加載。當你刪除/覆蓋jar文件時,你打破了鏈接,這就是其他類在c.jar中找不到類的原因。當您重新啓動JVM時,會有一個新的類文件在JVM運行時中加載,並且您發現它可用。

+0

感謝您的解釋,但這個問題並沒有發生。這只是現在才發生 –