我使用 Grails 2.0.4 创建了一个自定义 Liferay 6.2 portlet,the Portlets Plugin 0.9.2 ,和 Liferay Portlets Plugin 0.4 .
部署 portlet 后,我收到一个奇怪的错误。发生的情况如下:
- 通过 Web 界面上传 WAR 文件
- 将 portlet 添加到页面
- 收到一条错误消息,内容为“出现意外错误。请刷新当前页面。”
- 刷新页面,发现页面上的所有 portlet 都不再工作,并且显示以下错误:“内部服务器错误 - 访问请求的资源时发生错误。” (见下图)
日志指示以下错误:
com.liferay.portal.NoSuchResourceActionException: <Portlet>_WAR_<PortletApp>#VIEW
我见过其他例子,其中“#VIEW”显示“#ADD_TO_PAGE”。请注意,该 portlet 在我用于开发的 Liferay 6.2 普通版本上部署并运行得很好。
有谁知道问题可能是什么?谢谢。
堆栈跟踪:
Jan 16, 2014 10:42:40 AM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
com.liferay.portal.NoSuchResourceActionException: <Portlet>_WAR_<PortletApp>#VIEW
at com.liferay.portal.service.impl.ResourceActionLocalServiceImpl.getResourceAction(ResourceActionLocalServiceImpl.java:196)
at sun.reflect.GeneratedMethodAccessor308.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
at com.sun.proxy.$Proxy85.getResourceAction(Unknown Source)
at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.doUpdateResourcePermission(ResourcePermissionLocalServiceImpl.java:1190)
at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.updateResourcePermission(ResourcePermissionLocalServiceImpl.java:1312)
at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.setOwnerResourcePermissions(ResourcePermissionLocalServiceImpl.java:1038)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
最佳答案
问题最终出现在堆栈跟踪的更高位置。我收到以下错误:
net.sf.ehcache.CacheException: Unable to load class net.sf.ehcache.store.DefaultElementValueComparator
我通过阅读 this link 解决了这个问题。以下是我采取的步骤:
- 导航至
$liferay_home/tomcat/webapps/ROOT/WEB-INF/lib/
- 将 ehcache.jar 复制到某个位置进行备份(例如根
$liferay_home
目录) - 再次将 ehcache.jar 复制到某个地方以使用它(例如桌面)
- 将名称 ehcache.jar 更改为 ehcache.zip
- 解压 ehcache.zip 文件
- 将更新的
ClassLoaderUtil.class
文件复制到文件夹的net/sf/ehcache/util/
目录,替换当前的ClassLoaderUtil.class
文件。 - 压缩 ehcache 目录
- 将名称 ehcache.zip 更改为 ehcache.jar
- 将这个新的 ehcache.jar 文件放入
$liferay_home/tomcat/webapps/ROOT/WEB-INF/lib/
中,替换当前的 ehcache.jar
关于grails - Liferay Portlet 错误 - "NoSuchResourceActionException <Portlet>_WAR_<PortletApp>#VIEW",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167951/