grails - Liferay Portlet 错误 - "NoSuchResourceActionException <Portlet>_WAR_<PortletApp>#VIEW"

标签 grails liferay portlet liferay-6 portal

我使用 Grails 2.0.4 创建了一个自定义 Liferay 6.2 portlet,the Portlets Plugin 0.9.2 ,和 Liferay Portlets Plugin 0.4 .

部署 portlet 后,我​​收到一个奇怪的错误。发生的情况如下:

  1. 通过 Web 界面上传 WAR 文件
  2. 将 portlet 添加到页面
  3. 收到一条错误消息,内容为“出现意外错误。请刷新当前页面。”
  4. 刷新页面,发现页面上的所有 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)

The error after adding the portlet and refreshing the page

最佳答案

问题最终出现在堆栈跟踪的更高位置。我收到以下错误:

net.sf.ehcache.CacheException: Unable to load class net.sf.ehcache.store.DefaultElementValueComparator

我通过阅读 this link 解决了这个问题。以下是我采取的步骤:

  1. 导航至$liferay_home/tomcat/webapps/ROOT/WEB-INF/lib/
  2. 将 ehcache.jar 复制到某个位置进行备份(例如根 $liferay_home 目录)
  3. 再次将 ehcache.jar 复制到某个地方以使用它(例如桌面)
  4. 将名称 ehcache.jar 更改为 ehcache.zip
  5. 解压 ehcache.zip 文件
  6. 将更新的 ClassLoaderUtil.class 文件复制到文件夹的 net/sf/ehcache/util/ 目录,替换当前的 ClassLoaderUtil.class文件。
  7. 压缩 ehcache 目录
  8. 将名称 ehcache.zip 更改为 ehcache.jar
  9. 将这个新的 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/

相关文章:

grails - Grails:重定向操作

grails - 假设我在 Controller 中有一个列表或映射,那么如何使用渲染方法在GSP View 中访问它们?

java - 如何在 Liferay portal 6.2 中部署 geoserver war

jsp - 如何为 <portlet :resourceURL/>? 的参数赋值

javascript - javascript库由gsp-template切换

Grails 3 - 从 HQL 查询的查询结果中返回列表

java - liferay 门户内部有哪些技术

java - 如何区分同一个jsp上存在的两个iframe

properties - 向 Liferay 添加额外的语言属性

Spring Portlet 与 Liferay 服务器还是 Websphere Portlet Factory?