【发布时间】:2015-11-17 23:37:51
【问题描述】:
我对 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!"}
}
Java:
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;) 值:[[]] 可能的解决方案:wait()、wait(long)、any()、find()、wait(long, int)、each(groovy.lang.Closure)
更有趣的是,如果我让脚本保持原样并只更改 Java 部分,它会完美运行(我得到两个“嘿!”)
【问题讨论】:
标签: java groovy groovyshell