Java 无法打包Grails 3应用程序-NoSuchMethodError
我正在尝试打包我的Grails3.1.5应用程序 运行Java 无法打包Grails 3应用程序-NoSuchMethodError,java,grails,grails-3.1,Java,Grails,Grails 3.1,我正在尝试打包我的Grails3.1.5应用程序 运行grails包(或grailswar)会产生以下结果: 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 --stackt
grails包
(或grailswar
)会产生以下结果:
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来实现这一点(除非我遗漏了一些东西)。我已经通过使用:
./gradlew clean assemble
这会在/build/libs/
中产生一场战争
正如前面所讨论的,这可能是由Grails中的一个bug引起的。不清楚哪里出了问题,但我认为您可能对混合中的某些内容有一个错误的版本。错误消息表示正在使用Gradle 2.6。新创建的Grails3.1.5应用程序应该使用Gradle2.9。我会对此进行调查,看看这是否相关。我能找到的Gradle的最新版本是2.13;Grails为什么和如何使用Gradle2.9?“Grails如何使用Gradle2.9?”-请参阅和。这些配置了在使用
gradlew
时将使用的Gradle版本。Gradle包装器版本是否与Gradle版本相同?“当然可以使用grails实现这一点”-如果没有看到一个演示了这个问题的项目,我就无法判断出哪里出了问题,但是如果安装了war
插件,那么/gradlew assembly
将生成.war
文件,而这正是大多数人所做的。如果未安装war
插件,则/gradlew assembly
将生成一个可执行的.jar
文件。