这段代码:
evaluate ("def test() { println \"Test is successful!\" }")
test()
结果异常:
致命:没有方法签名: script1409644336796288198097.test() 适用于参数类型:() 值:[]
可能的解决方案:use([Ljava.lang.Object;)、getAt(java.lang.String)、use(java.util.List, groovy.lang.Closure)、use(java.lang.Class, groovy.lang.关闭)、等待()、等待(长)
groovy.lang.MissingMethodException:没有方法签名:script1409644336796288198097.test() 适用于参数类型:() 值:[]
可能的解决方案:use([Ljava.lang.Object;)、getAt(java.lang.String)、use(java.util.List, groovy.lang.Closure)、use(java.lang.Class, groovy.lang.关闭)、等待()、等待(长)
在 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
...
我做错了什么?
该脚本评估结果为空。您应该返回某些内容或执行脚本并返回结果。
返回闭包而不是定义方法的示例:
test = evaluate ('return { "Test is successful!" }')
assert test() == "Test is successful!"
还有一个脚本执行方法本身的示例:
result = evaluate 'def test() { "eval test" }; return test()'
assert result == "eval test"
如果您无法更改脚本代码,您可以从脚本中解析一个类 http://groovy.codehaus.org/Embedding+Groovy,创建一个新对象,然后执行test()
method:
def parent = getClass().getClassLoader()
def loader = new GroovyClassLoader(parent)
def clazz = loader.parseClass('def test() { "new class definition" }');
obj = clazz.newInstance()
assert obj.test() == "new class definition"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)