将简单的Portlet部署到Liferay – ClassCastException

我正在为Liferay部署最基本的Portlet:

public class FirstPortlet extends GenericPortlet
{
    @RenderMode(name="VIEW")
    public void welcomeWelcome(RenderRequest request, 
            RenderResponse response) throws  
            PortletException, IOException
    {       
        PrintWriter out = response.getWriter();
        out.println ("This is a portlet, <em>within a Portal</em>");
    }
}

在部署时,我得到一个ClassCastException:

 Caused by: java.lang.ClassCastException: FirstPortlet cannot be cast to javax.po
rtlet.Portlet

在谷歌搜索之后,似乎部署portlet.jar是一个错误 – 我已经确定我不会意外地这样做.

javax.portlet.Portlet由GenericPortlet实现,所有Portlet示例似乎都扩展了GenericPortlet,所以我认为没问题.

有人可以帮忙吗?

javax.portlet.Portlet is implemented
by GenericPortlet, and all Portlet
examples seem to extend GenericPortlet
so I assume that’s ok.

如果GenericPortlet实现了Portlet,我的猜测是你有一个类加载器问题.该类在两个不同的类加载器中加载两次,因此被认为是不同的.

After Googling, it appears that
deploying portlet.jar is a mistake –
I’ve made sure I’m not accidentally
doing this.

我仍然建议您仔细检查是否没有在某处加载两次的portlet.jar(或其他包含Portlet的jar).可能的位置取决于您使用的容器(Tomcat?Glassfish?).

转载注明原文:将简单的Portlet部署到Liferay – ClassCastException - 代码日志