将Portlet部署到liferay时出错 - >文件" /WEB-INF/tld/std-portlet.tld"未找到

时间:2014-09-02 11:31:46

标签: liferay liferay-6

我今天花了几个小时试图将在IBM Portal服务器上正常运行的jsr168 portlet转换为在liferay上运行的Portlet,因为我想在我的本地服务器上使用liferay作为我的开发环境。

问题1:

我在部署我的portlet时遇到std-portlet.tld not found错误...

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

有人可以就如何解决这个问题给我一些建议吗?

问题2:

当从IBM Portal服务器迁移到Liferay时,我必须在我的web-inf lib目录中包含许多jar,在部署到IBM Portal服务器时我不必包括这些jar,例如apache commons libs和jax-rpc jar在上面的屏幕截图中。

这听起来是否正确我必须这样做?如果是这样,我可能需要为不同的门户服务器创建不同的构建文件。你同意吗?

谢谢......

(p.s。我在eclipse中的项目仍然有websphere方面。我已经说过我不需要改变它吗?)

1 个答案:

答案 0 :(得分: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并未提供这些组件。如果您将它们添加到您的webapp(WEB-INF/lib)或全局类路径(tomcat/libtomcat/lib/ext)仍然是您自己的选择。您很可能会受益于针对不同环境,例如:在项目中使用Liferay和IBM特定的部署描述符。一个例子是liferay-display.xml,它允许您指定自定义portlet将出现的类别。