Grails Liferay Portlet错误-“;无此类资源操作异常<;Portlet>_战争<;PortletApp>#“视图”;
我已经使用Grails2.0.4和创建了一个定制的Liferay 6.2 portlet 部署portlet后,我遇到了一个奇怪的错误。发生的情况如下: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
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/
$liferay\u home
目录)ClassLoaderUtil.class
文件复制到文件夹的net/sf/ehcache/util/
目录,替换当前的ClassLoaderUtil.class
文件$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。我可以证实这对我有效,很多次!你能解释一下这门课有什么不同吗?