错误记录Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误记录Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )相关的知识,希望对你有一定的参考价值。





一、报错信息



在使用 Groovy 闭包时 , 会报如下错误 :

Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: Test$_main_closure3.call() is applicable for argument types: (java.lang.String) values: [Hello]
Possible solutions: doCall(), any(), any(), each(groovy.lang.Closure), any(groovy.lang.Closure), each(groovy.lang.Closure)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:284)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1015)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:806)
	at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
	at Test.main(Test.groovy:50)

Execution failed for task ':Test.main()'.
> Process 'command 'D:/Program Files/Java/jdk1.8.0_221/bin/java.exe'' finished with non-zero exit value 1





二、解决方案



上述类型的错误 , 是由于闭包中传入参数错误导致的 ;

Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: Test$_main_closure3.call() is applicable for argument types: (java.lang.String) values: [Hello]
Possible solutions: doCall(), any(), any(), each(groovy.lang.Closure), any(groovy.lang.Closure), each(groovy.lang.Closure)

原代码 : 其中闭包中有 " -> " 符号 , 表示闭包不希望接收任何参数 ;

        def closure2 =  ->
            println "Hello"
        

        closure2("Hello")

修改后代码 : 删除闭包中的参数 , 即可正确执行该闭包 ;

        def closure2 =  ->
            println "Hello"
        

        closure2()

以上是关于错误记录Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )的主要内容,如果未能解决你的问题,请参考以下文章

错误记录IntelliJ IDEA 编译 Groovy 报错 ( GroovyRuntimeException: This script or class could not be run. )

错误记录IntelliJ IDEA 编译 Groovy 报错 ( Could not open/create prefs root node SoftwareJavaSoftPrefs )

错误记录Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )

错误记录Groovy 报错 ( Execution failed for task ‘:compileGroovy‘. > org/apache/tools/ant/taskdefs/Java )

错误记录Groovy 闭包使用报错 ( 闭包中不能直接使用外部对象的方法 | 需要先设置 delegate 代理 )

错误记录IntelliJ IDEA 编译 Groovy 项目报错 ( gradle-resources-test:XX: java.lang.NoClassDefFoundError: org )