【问题标题】:Liferay Portlet Taglib Cast ExceptionLiferay Portlet Taglib 转换异常
【发布时间】:2011-09-02 12:43:13
【问题描述】:

这是我在 Liferay Portal 6.0.6 中尝试运行 portlet 时得到的堆栈跟踪。

有人知道发生了什么吗?

12:40:00,146 错误 [PortletServlet:96] javax.portlet.PortletException: javax.servlet.ServletException: javax.servlet.jsp .JspException:com.liferay.taglib.aui.LayoutTag 无法转换为 javax.servlet.jsp.tagext.Tag javax.portlet.PortletException:javax.servlet.ServletException:javax.servlet.jsp.JspException:com.liferay.taglib.aui.L ayoutTag 不能强制转换为 javax.servlet.jsp.tagext.Tag 在 com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:110) 在 org.springframework.web.portlet.DispatcherPortlet.doRender(DispatcherPortlet.java:1137) 在 org.springframework.web.portlet.DispatcherPortlet.render(DispatcherPortlet.java:1092) 在 org.springframework.web.portlet.DispatcherPortlet.doRenderService(DispatcherPortlet.java:755) 在 org.springframework.web.portlet.FrameworkPortlet.processRequest(FrameworkPortlet.java:522) 在 org.springframework.web.portlet.FrameworkPortlet.doDispatch(FrameworkPortlet.java:470) 在 javax.portlet.GenericPortlet.render(GenericPortlet.java:233) 在 com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:101) 在 com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64) 在 com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:92) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) 在 org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551) 在 org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488) 在 com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:638) 在 com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:723) 在 com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:425) 在 org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1440) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) 在 org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551) 在 org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488) 在 com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:3740) 在 com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:1180) 在 com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:160) 在 com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:94) 在 com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:256) 在 com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:181) 在 org.apache.jsp.html.portal.layout.view.portlet_jsp._jspService(portlet_jsp.java:821) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) 在 org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551) 在 org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488) 在 com.liferay.portal.action.LayoutAction.includeLayoutContent(LayoutAction.java:370) 在 com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:629) 在 com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:232) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 在 com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:153) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 在 org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 在 com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:508)

【问题讨论】:

  • 你做了什么来得到这个性感的堆栈跟踪?
  • 部署和运行一个 portlet (Spring MVC)...

标签: jsp maven liferay portlet portal


【解决方案1】:

这样的堆栈跟踪通常来自两次在类路径上的类。我什至见过一次“com.something.SomeClass cannot be cast to java.lang.Object”——当时有人设法同时在类路径上获得了两个 rt.jar(古代历史)。

检查 servlet api 或 jsp api,它们不应该在你的 webapp 中,而只能在 tomcat(这似乎是你正在使用的)带来的全局类路径中。如果不是这样,请检查包含也包含在全局类路径中的类的任何其他 jar。

基于Troubleshooting java.lang.AbstractMethodError in portlet development,您确实遇到了一些类路径问题。

【讨论】:

  • 如果我从我的 webapp 的 lib 目录中删除提到的 jar,那么我根本无法运行它
  • 我得到:09:10:31,820 ERROR [jsp:154] org.apache.jasper.JasperException: /WEB-INF/jsp/main.jsp(7,0) The absolute uri: http://java .sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
  • 您能否在您的问题中添加 web.xml 的 taglib 部分,以及您的 WEB-INF/lib 文件夹和 tomcat 的 /lib 文件夹(如果您在其中进行了任何更改)的列表?您肯定有类路径问题,但如果不了解更多细节,很难更明确地提供帮助。
【解决方案2】:

问题解决了。 如上所述,问题是 100% 的类路径问题。虽然我用 jarscan 扫描了所有目录,但我找不到任何冗余.. 事实证明,我的同事使用了许多不必要的 JAR,而这些 JAR 被不必要地添加到了我的 WAR 中。

现在可以使用了!

也谢谢大家 ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多