2014-09-02 37 views
1

我今天花了幾個小時試圖將在IBM Portal服務器上正常運行的jsr168 portlet轉換爲一個在liferay上運行的Portlet,因爲我想在我的本地服務器上使用liferay作爲我的開發環境。將Portlet部署到liferay時出錯 - >文件「/WEB-INF/tld/std-portlet.tld」找不到

問題1:

我得到一個STD-portlet.tld沒有發現,當我部署我的portlet如下錯誤...

10:57:49,218 ERROR [ajp-bio-8009-exec-91][render_portlet_jsp:132] null 
org.apache.jasper.JasperException: /_StockOnHandPortlet/jsp/html/StockOnHandPortletView.jsp (line: 2, column: 61) File "/WEB-INF/tld/std-portlet.tld" not found 

我已經得到了最新版的eclipse並從Eclipse Market Place安裝liferay sdk插件。然後,我將liferay服務器運行時添加到了我認爲可能已解決此問題的Portlet,但它沒有。

enter image description here

有人可以給我就如何解決這一PLS一些建議嗎?

問題2:

當從IBM門戶服務器移動到Liferay我必須包括一些在我的WEB-INF lib目錄罐子,我並沒有像部署到IBM門戶服務器時要包括上面的截圖中的apache commons libs和jax-rpc jar。

這聽起來沒錯,我必須這樣做嗎?如果是這樣,看起來我可能需要爲不同的門戶服務器創建不同的構建文件。你同意嗎?

感謝...

(PS我在Eclipse項目仍然在WebSphere方面。我asssumed,我並不需要改變?)

+0

你能告訴我們你的文件夾結構中的WEB-INF目錄下有什麼嗎?和'web.xml'? – 2014-09-02 11:54:57

回答

1

我想這std-portlet.tld指的是什麼 - 在Liferay中 - 是<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>(請注意,我在此命名JSR-286,例如portlet 2.0 taglib)。我不確定std-portlet是否是Portlet 1.0的標準名稱,因爲自從2.0版本發佈以來, 2008年,我很久沒用1.0了。

Liferay會自動假定您的插件需要訪問標準portlet taglib並使其可用於您的應用程序 - 但僅限於上述標準名稱。正如我所說的,我不確定您是使用portlet-spec 1.0的標準方式還是IBM特定的方式。 (我對兩者都沒有經驗 - 很高興遲到了只能使用2.0)

所有門戶(和應用程序服務器)都使不同的代碼可用於全局類路徑上的應用程序 - 或在部署期間。而且您似乎發現了IBM提供的一些組件,但Liferay沒有提供這些組件。如果將它們添加到您的Web應用程序(WEB-INF/lib)或全局類路徑(tomcat/libtomcat/lib/ext)中,則仍然是您自己的選擇。很可能你會因瞄準不同的環境而受益,例如在您的項目中使用Liferay和IBM特定的部署描述符。一個例子是liferay-display.xml,它允許你指定你的定製portlet出現的類別。

+0

謝謝。聽起來好像事情在實現中的差異變得有點棘手。罐子的差異是可以的。正如你所提到的,我可以將它們添加到tomcat庫,但是我必須調查標籤庫的內容,並評估如果使用liferay作爲我的開發環境是可行的。 – Richie 2014-09-02 12:41:03

+0

你甚至可以使用Liferay作爲你的產品環境;) – 2014-09-02 12:44:46

+0

Lol。不幸的是,我的公司不斷受到IBM銷售人員的困擾。 – Richie 2014-09-02 12:49:33

相關問題