无法打包Grails 3应用程序 - NoSuchMethodError

时间:2016-05-02 13:19:27

标签: java grails grails-3.1

我正在尝试打包我的Grails 3.1.5应用程序。

运行grails package(或grails war)会产生以下结果:

FAILURE: Build failed with an exception.

* What went wrong:
org.codehaus.groovy.runtime.DefaultGroovyMethods.each(Ljava/util/List;Lgroovy/lang/Closure;)Ljava/util/List;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2.205 secs
| Error Command [package] error: Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-2.6-bin.zip'. (Use --stacktrace to see the full trace)

使用--stacktrace运行时:

Caused by: java.lang.NoSuchMethodError: org.codehaus.groovy.runtime.DefaultGroovyMethods.each(Ljava/util/List;Lgroovy/lang/Closure;)Ljava/util/List;
        at asset.pipeline.gradle.AssetCompile.getSource(AssetCompile.groovy:188)
        at asset.pipeline.gradle.AssetCompile_Decorated.getSource(Unknown Source)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$PropertyInfo$4.create(AnnotationProcessingTaskFactory.java:460)
        at org.gradle.util.SingleMessageLogger.whileDisabled(SingleMessageLogger.java:166)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$PropertyInfo.getValue(AnnotationProcessingTaskFactory.java:458)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$Validator$1.call(AnnotationProcessingTaskFactory.java:262)

我的版本是:

| Grails Version: 3.1.5
| Groovy Version: 2.4.6
| JVM Version: 1.8.0_91

我删除了.gradle缓存文件夹,运行grails clean,但没有运气。

编辑:我目前的解决方案是使用gradle来构建战争; gradle war生成一个可用于部署的超级jar。肯定很高兴为此使用grails(除非我遗漏了什么)。

2 个答案:

答案 0 :(得分:0)

我使用以下方法解决了这个问题:

./gradlew clean assemble

这会在./build/libs/中产生一个WAR。

这可能是由Grails中的错误引起的,如here所述。

答案 1 :(得分:0)

就我而言,在使用旧的 grails 包装器 (grailsw) 文件时会出现此错误。解决方案是在我的路径中使用 gradlew 和 Grails CLI,而不是使用旧的 grailsw