簡體   English   中英

2個具有相同名稱的類在WebSphere Portal的Portlet中的不同jar中

[英]2 classes with same name in different jar's in portlet for WebSphere portal

我正在研究一個portlet項目,並且在不同的.jar文件中遇到了兩個同名類(包括包)的問題。 我將com.ibm.ws.webcontainer.jar作為默認的WebSphere庫,並將jsf-impl.jar作為某些JSF功能所必需的。
PortletFacesContextFactoryImpl類(另一個JSF類)嘗試獲取對com.sun.faces.util.Util.parameterNonNull(Object arg)方法的訪問PortletFacesContextFactoryImpl出現了問題,並且出現了NoSuchMethodError
我嘗試將類加載器策略設置為PARENT_LAST,這沒有幫助。 我無法從服務器中刪除com.ibm.ws.webcontainer.jar ,但是當我嘗試在我的代碼中使用Util類時,唯一的選擇是從其中的類,而不是jsf-impl.jar jsf-impl.jar包含在Java構建路徑中。

由於無法更改PortletFacesContextFactoryImpl源和使用錯誤的類移動.jar,如何解決此問題?

上一個父母應該是您的解決方案。 WebSphere Portal部署portlet應用程序時默認使用Parent Last,但是在WebSphere Application Server集成解決方案控制台(管理控制台)>再次檢查它不會有任何問題。

但是,這還取決於您的Portlet應用程序設置。 我以為是com.sun.faces.util.Util困擾着您。 在我的系統上,此類位於jsf-impl.jar和Application Server Web容器中 為了使其正常工作,需要將jsf-impl.jar放置在portlet應用程序的WEB-INF/lib目錄中。 要驗證這一點,請使用WAS的類加載器視圖:管理控制台>故障排除>類加載器查看器> WebSphere_Portal>應用程序,然后使用您的Portlet應用程序。 它必須以PA開頭。 切換到表格視圖並搜索類。

您還提到了Java Build Path 這是另一個主題,取決於您的IDE-可能是Eclipse。 檢查“ 訂購和出口”選項卡,應將jsf-impl.jar放在頂部,以便它覆蓋服務器運行時類路徑條目。

PARENT_LAST類路徑設置將為您提供幫助。 但是,要完成此設置,您的portlet muste必須打包為EAR。 如果您將portlet打包打包,並且您手動配置了classpath設置,則每次部署該Portlet時,它們都會被刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM