我对Groovy完全不熟悉,所以我希望答案不明显......
假设我有一个脚本“Test.groovy”:
class A {
def greet() {println "Hey there!"}
}
new A().greet()
我使用GroovyShell
(来自Java)评估此脚本:
new GroovyShell().evaluate(new File("Test.groovy"));
我得到了预期的输出:
嘿那里!
现在,我从脚本中删除了最后一行,而是在对evaluate()
的单独调用中对其进行评估,我得到了一个非常模糊的异常。
“Test.groovy”:
class A {
def greet() {println "Hey there!"}
}
爪哇:
GroovyShell shell = new GroovyShell();
shell.evaluate(new File("Test.groovy"));
shell.evaluate("new A().greet()");
org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack:没有方法签名:A.main()适用于参数类型:([Ljava.lang.String;] values:[[]] 可能的解决方案:wait(),wait(long),any(),find(),wait(long,int),each(groovy.lang.Closure)
更有趣的是,如果我按原样使用脚本并仅更改Java部分,它就能完美运行(我得到两个“嘿那里!”)