【问题标题】:Grails start up error: groovy.lang.Closure.rehydrate(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lgroovy/lang/Closure;Grails启动错误:groovy.lang.Closure.rehydrate(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lgroovy/lang/Closure;
【发布时间】:2012-09-10 01:16:44
【问题描述】:

在 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)

非常感谢任何线索!

【问题讨论】:

    标签: grails ubuntu tomcat6 elasticsearch


    【解决方案1】:

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

    【讨论】:

    • 如果您使用的是maven,这可能与问题有关:jira.grails.org/browse/GRAILS-9406
    • WEB_INF\lib 我有groovy-all-1.8.6.jargroovy-1.7.12-SNAPSHOT.jar。我认为 groovy 1.7 是由 ElasticSearch 模块添加的...
    • 在删除ElasticSearch 添加的groovy-1.7.12-SNAPSHOT.jar 时效果很好。我将不得不更改 Build.groovy 以排除它。
    【解决方案2】:

    致遇到此问题的其他人。 David 在 9 月 18 日的评论是正确的,有时您的插件会引入一些服务器不支持的旧版本的 Groovy。解决此问题需要执行以下操作:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多