代码之家  ›  专栏  ›  技术社区  ›  Dick Chesterwood

将简单的portlet部署到liferay-classcastexception

  •  6
  • Dick Chesterwood  · 技术社区  · 14 年前

    我正在向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
    

    在google之后,似乎部署portlet.jar是一个错误——我已经确保我不会意外地这样做。

    portlet是由genericportlet实现的,所有的portlet示例似乎都扩展了genericportlet,所以我认为这是可以的。

    有人能帮忙吗?

    2 回复  |  直到 14 年前
        1
  •  8
  •   ewernli    14 年前

    实现了javax.portlet.portlet 按genericportlet和所有portlet 示例似乎扩展了genericportlet 所以我想没关系。

    如果 GenericPortlet 器具 Portlet ,我猜您有一个类加载器问题。该类在两个不同的类装入器中装入两次,因此被认为是不同的。

    经过谷歌搜索,似乎 部署portlet.jar是个错误- 我已经确定我不是偶然的 这样做。

    如果没有,我还是建议你再检查一遍 portlet.jar (或另一个装有 portlet )在某处装了两次。可能的位置取决于您使用的容器(tomcat?什么?)。

        2
  •  7
  •   Jaromir Hamala    14 年前

    这绝对是类加载问题。如果你是 当然 您的war归档文件中没有portlet.jar,您可以打开详细的类加载并查看从何处加载javax.portlet.portlet。

    要将详细类加载转换为jvm,请传递以下参数:

    -详细:类