【发布时间】:2019-12-21 16:54:06
【问题描述】:
我正在尝试将字符串评估为 groovy 中的代码,即使方法存在于同一个脚本中,它也会因 groovy.lang.MissingMethodException 异常而失败。据我了解,groovy 每次尝试评估代码时都会运行新实例,但是有没有办法将当前脚本注入Eval.me 或GroovyShell().evaluate() 以便它可以找到方法并运行它?
下面是示例代码sn-p,
def justSayHello(){
return "hello"
}
def my_str = "justSayHello()"
//Eval.me(my_func_str)
new GroovyShell().evaluate(my_func_str)
Eval 和 GroovyShell().evaluate() 都在抛出异常
Caught: groovy.lang.MissingMethodException: No signature of method: Script1.justSayHello() is applicable for argument types: () values: []
groovy.lang.MissingMethodException: No signature of method: Script1.justSayHello() is applicable for argument types: () values: []
at Script1.run(Script1.groovy:1)
at string_split.run(string_split.groovy:35)
【问题讨论】: