Grails Liferay Portlet错误-“;无此类资源操作异常<;Portlet>_战争<;PortletApp>#“视图”;

Grails Liferay Portlet错误-“;无此类资源操作异常<;Portlet>_战争<;PortletApp>#“视图”;,grails,liferay,portlet,liferay-6,portal,Grails,Liferay,Portlet,Liferay 6,Portal,我已经使用Grails2.0.4和创建了一个定制的Liferay 6.2 portlet 部署portlet后,我遇到了一个奇怪的错误。发生的情况如下: 通过web界面上传WAR文件 将portlet添加到页面 收到一个错误,上面写着“出现意外错误。请刷新当前页面。” 刷新页面以发现页面上的Portlet不再工作,并显示以下错误:“内部服务器错误-访问请求的资源时出错。”(请参见下图) 日志显示以下错误: com.liferay.portal.NoSuchResourceActionExcept

我已经使用Grails2.0.4和创建了一个定制的Liferay 6.2 portlet

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

  • 通过web界面上传WAR文件
  • 将portlet添加到页面
  • 收到一个错误,上面写着“出现意外错误。请刷新当前页面。”
  • 刷新页面以发现页面上的Portlet不再工作,并显示以下错误:“内部服务器错误-访问请求的资源时出错。”(请参见下图)
  • 日志显示以下错误:

    com.liferay.portal.NoSuchResourceActionException: <Portlet>_WAR_<PortletApp>#VIEW
    
    net.sf.ehcache.CacheException: Unable to load class net.sf.ehcache.store.DefaultElementValueComparator
    
    com.liferay.portal.NoSuchResourceActionException:_WAR_35;视图
    
    我还见过其他例子,其中“#视图”显示“#将#u添加到#u页面”。请注意,portlet在我用于开发的Liferay 6.2的普通版本上部署和运行良好

    有人知道问题可能是什么吗?多谢各位

    Stacktrace:

    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)
    
    2014年1月16日上午10:42:40 org.apache.catalina.core.ApplicationDispatcher调用
    严重:Servlet jsp的Servlet.service()引发异常
    com.liferay.portal.NoSuchResourceActionException:_WAR#视图
    位于com.liferay.portal.service.impl.ResourceActionLocalServiceImpl.getResourceAction(ResourceActionLocalServiceImpl.java:196)
    位于sun.reflect.GeneratedMethodAccessor308.invoke(未知源)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
    位于java.lang.reflect.Method.invoke(Method.java:606)
    在com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.procedure(ServiceBeanMethodInvocation.java:115)上
    在com.liferay.portal.spring.aop.ServiceBeanApproxy.invoke(ServiceBeanApproxy.java:175)上
    位于com.sun.proxy.$Proxy85.getResourceAction(未知源)
    在com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.doUpdateResourcePermission上(ResourcePermissionLocalServiceImpl.java:1190)
    位于com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.updateResourcePermission(ResourcePermissionLocalServiceImpl.java:1312)
    位于com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.setOwnerResourcePermissions(ResourcePermissionLocalServiceImpl.java:1038)
    在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
    在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
    位于java.lang.reflect.Method.invoke(Method.java:606)
    在com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.procedure(ServiceBeanMethodInvocation.java:115)上
    位于com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)
    位于com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
    在com.liferay.portal.spring.aop.servicebeanmethodinactione.procedure(servicebeanmethodinactione.java:111)
    在com.liferay.portal.spring.aop.ServiceBeanApproxy.invoke(ServiceBeanApproxy.java:175)上
    

    我不知道portlet如何与grails一起工作,但是可以通过解决如何使用grails定义权限来修复您的错误

    有关权限的Liferay官方文档可在以下位置找到:

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

    com.liferay.portal.NoSuchResourceActionException: <Portlet>_WAR_<PortletApp>#VIEW
    
    net.sf.ehcache.CacheException: Unable to load class net.sf.ehcache.store.DefaultElementValueComparator
    
    我通过阅读解决了这个问题。以下是我采取的步骤:

  • 导航到
    $liferay\u home/tomcat/webapps/ROOT/WEB-INF/lib/
  • 将ehcache.jar复制到某个地方进行备份(如根目录
    $liferay\u 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\u home/tomcat/webapps/ROOT/WEB-INF/lib/
    ,替换当前的ehcache.jar

  • 因为我在我的项目中使用了ehcache-2.10.4.jar,所以在升级到Liferay EE 6.2.10 EE GA1之后,我遇到了同样的问题。因此,我没有摆弄编译过的类,而是将
    $liferay_home/tomcat/webapps/ROOT/WEB-INF/lib/
    目录中的ehcache.jar替换为Maven依赖项提供的目录

    你有没有想过?我在新安装的Liferay 6.2 GA1上遇到了相同的错误。谢谢我把我的修正作为下面的答案。祝你好运。我找到了应该被覆盖的
    net/sf/ehcache/util/ClassLoaderUtil.class
    。但是我应该在哪里找到更新的.class文件呢?没关系,我按照您的链接找到了正确的ClassLoaderUtil.class。我可以证实这对我有效,很多次!你能解释一下这门课有什么不同吗?