【问题标题】:Cannot package Grails 3 application - NoSuchMethodError无法打包 Grails 3 应用程序 - NoSuchMethodError
【发布时间】:2016-05-02 13:19:27
【问题描述】:

我正在尝试打包我的 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 在构建下生成一个 uber-jar,我可以将其用于部署。肯定会很高兴为此使用 grails(除非我遗漏了什么)。

【问题讨论】:

  • 目前还不清楚出了什么问题,但我希望你有一个错误的版本。错误消息表明正在使用 Gradle 2.6。一个新创建的 Grails 3.1.5 应用程序应该使用 Gradle 2.9。我会对此进行调查,看看是否相关。
  • 我能找到的Gradle最新版本是2.13; Grails 为什么以及如何使用 Gradle 2.9?
  • "Grails 将如何使用 Gradle 2.9?" - 见github.com/grails/grails-profile-repository/blob/…github.com/grails/grails-profile-repository/blob/…。这些配置在使用 gradlew 时将使用的 Gradle 版本。
  • gradle wrapper 版本是否与 Gradle 版本相同?
  • "肯定会很高兴为此使用 grails" - 如果没有看到演示该问题的项目,我无法判断出了什么问题,但 ./gradlew assemble 将生成 .war 文件,如果 @ 987654335@ 插件已安装,这是大多数人所做的。如果未安装war 插件,则./gradlew assemble 将生成一个可执行的.jar 文件。

标签: java grails grails-3.1


【解决方案1】:

我已经通过以下方式解决了这个问题:

./gradlew clean assemble

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

这可能是由 Grails 中的错误引起的,正如 here 所讨论的那样。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多