1

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

此应用程序run-app在 Windows 7 上的 STS 3.0 中运行良好,在 Windows 上也使用 Tomcat6。

我已经war手动部署了。

我已经看到部署到 Cloud Foundry 的应用程序报告了类似的问题: 错误 500:在 cloud Foundry 上部署 grails 应用程序时的 Closure.rehydrate但没有给我任何线索。

该应用程序以前运行良好。我最近做了一些代码更改,包括安装 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)

任何线索非常感谢!

4

2 回答 2

4

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

于 2012-09-18T03:28:19.467 回答
0

对于遇到此问题的其他人。David 在 9 月 18 日的评论是正确的,有时您的插件会引入一些服务器不支持的旧版本的 Groovy。这是解决此问题所需要做的事情:

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

grails.project.dependency.resolution = {
    inherits("global") {
        excludes "groovy" //ADD THIS LINE
}
于 2015-08-19T13:56:12.403 回答