照着写一个简单的portal,后台一直报java.lang.NullPointerException

本文介绍了一个在Liferay 5.1.2版本中遇到的关于Portlet配置导致NullPointerException异常的问题,并提供了解决该问题的具体方法。错误发生在获取资源包的过程中,通过调整portlet-ext.xml文件中<resource-bundle>标签的格式可以避免此异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.NullPointerException
 at com.liferay.portlet.PortletConfigImpl.getResourceBundle(PortletConfigImpl.java:196)
 at com.liferay.portal.util.PortalImpl.getPortletTitle(PortalImpl.java:1636)
 at com.liferay.portal.util.PortalUtil.getPortletTitle(PortalUtil.java:504)
 at com.liferay.portal.util.comparator.PortletTitleComparator.compare(PortletTitleComparator.java:62)
 at com.liferay.portal.util.comparator.PortletTitleComparator.compare(PortletTitleComparator.java:42)
 at java.util.Arrays.mergeSort(Arrays.java:1284)
 at java.util.Arrays.sort(Arrays.java:1223)
 at java.util.Collections.sort(Collections.java:159)
 at org.apache.jsp.html.portlet.layout_005fconfiguration.view_005fcategory_jsp._jspService(view_005fcategory_jsp.java:852)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
 at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:67)
 at org.apache.jsp.html.portlet.layout_005fconfiguration.view_jsp._jspx_meth_liferay_002dutil_005finclude_005f0(view_jsp.java:1059)
 at org.apache.jsp.html.portlet.layout_005fconfiguration.view_jsp._jspService(view_jsp.java:921)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
 at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:67)
 at org.apache.jsp.html.common.themes.portlet_jsp._jspService(portlet_jsp.java:1622)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
 at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:302)
 at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:115)
 at com.liferay.portal.struts.PortletRequestProcessor.doInclude(PortletRequestProcessor.java:284)
 at com.liferay.portal.struts.PortletRequestProcessor.doForward(PortletRequestProcessor.java:255)
 at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
 at org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:341)
 at org.apache.struts.action.RequestProcessor.processForward(RequestProcessor.java:572)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:221)
 at com.liferay.portal.struts.PortletRequestProcessor.process(PortletRequestProcessor.java:235)
 at com.liferay.portlet.StrutsPortlet.include(StrutsPortlet.java:261)
 at com.liferay.portlet.StrutsPortlet.doView(StrutsPortlet.java:156)
 at com.liferay.portal.kernel.portlet.LiferayPortlet.doDispatch(LiferayPortlet.java:115)
 at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
 at com.sun.portal.portletcontainer.appengine.filter.FilterChainImpl.doFilter(FilterChainImpl.java:121)
 at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:69)
 at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:589)
 at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:646)
 at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:414)
 at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1378)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
 at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:2391)
 at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:2341)
 at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:773)
 at com.liferay.portal.action.RenderPortletAction.execute(RenderPortletAction.java:96)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
 at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:164)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:443)
 at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:708)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
 at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:117)
 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:71)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
 at com.liferay.portal.servlet.filters.compression.CompressionFilter.processFilter(CompressionFilter.java:141)
 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:71)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
 at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:282)
 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:71)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
 at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:199)
 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:71)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
 at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.doFilter(VirtualHostFilter.java:186)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:132)
 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:74)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
 at java.lang.Thread.run(Thread.java:595)
03:55:52,343 ERROR [IncludeTag:52] Current URL /c/portal/render_portlet generates exception: null

 

我的版本是5.1.2,照着例子删了写,写了删重复N遍都是这样,找了好多资料,才发现原来是portlet-ext.xml的<resource-bundle>搞鬼,疯了。


好像liferay有个bug
把<resource-bundle>标签换两行就报错,不显示。
com.liferay.portlet.StrutsResourceBundle</resource-bundle>
得把整个标签写成一行

狂晕啊~~~~~~~~~

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值