Grails启动错误:groovy.lang.Closure.rehydrate(Ljava / lang / Object; Ljava / lang / Object; Ljava / lang / Object;)Lgroovy / lang / Closure;

时间:2012-09-17 19:19:03

标签: grails ubuntu tomcat6 elasticsearch

在Tomcat 6 / Ubuntu 12.04上启动Grails 2.1.0应用程序时出现以下错误。

Error 500 - Internal Server Error.

groovy.lang.Closure.rehydrate(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lgroovy/lang/Closure;

此应用在Windows 7上的STS 3.0中使用run-app并在Windows上使用Tomcat6时运行良好。

我手动部署了war

我见过针对部署到Cloud Foundry的应用报告的类似问题: Error 500: Closure.rehydrate at deploying grails app on cloud foundry但没有任何东西能给我任何线索。

该应用程序以前工作正常。我最近做了很多代码更改,包括安装ElasticSearch插件,但日志中的错误是指从gsps构建视图。

INFO: Initializing Spring FrameworkServlet 'grails'
17-Sep-2012 11:34:47 org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet grails threw exception
java.lang.NoSuchMethodError: groovy.lang.Closure.rehydrate(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lgroovy/lang/Closure;
    at org.codehaus.groovy.grails.web.taglib.GroovyPageTagBody.<init>(GroovyPageTagBody.java:65)
    at org.codehaus.groovy.grails.web.taglib.GroovyPageTagBody.<init>(GroovyPageTagBody.java:49)
    at org.codehaus.groovy.grails.web.pages.GroovyPage.createTagBody(GroovyPage.java:630)
    at org.codehaus.groovy.grails.web.pages.GroovyPage$createTagBody.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)
    at gsp_bipboxindex_gsp.run(index.gsp:4)

任何线索都非常感激!

2 个答案:

答案 0 :(得分:4)

Groovy 1.8.5中引入了

Closure.rehydrate。看起来战争中有一个旧版本的groovy。检查war文件中的WEB-INF / lib目录,看它是否包含重复版本和旧版本的groovy。

答案 1 :(得分:0)

遇到此问题的其他人。 David对9月18日的评论是正确的,有些时候你的插件会带来旧版本的Groovy,这些版本在某些服务器上是不受支持的。以下是解决此问题的方法:

在BuildConfig.groovy中查找这些条目,并添加一行以排除groovy。

grails.project.dependency.resolution = {
    inherits("global") {
        excludes "groovy" //ADD THIS LINE
}