为什么我得到*Error?
问题描述:
在Groovy Console我有这样的:为什么我得到*Error?
import groovy.util.*
import org.codehaus.groovy.runtime.*
def gse = new GroovyScriptEngine("c:\\temp")
def script = gse.loadScriptByName("say.groovy")
this.metaClass.mixin script
say("bye")
say.groovy包含
def say(String msg) {
println(msg)
}
编辑:我提交了一份bug报告:https://svn.dentaku.codehaus.org/browse/GROOVY-4214
答
这是当它击中行:
this.metaClass.mixin script
加载的脚本可能有ar参考加载它的类(这个类),所以当你尝试混合它时,你会得到一个无限循环。
一种解决方法是要做到:
def gse = new groovy.util.GroovyScriptEngine('/tmp')
def script = gse.loadScriptByName('say.groovy')
script.newInstance().with {
say("bye")
}
[编辑]
这似乎工作,如果你使用你原来的剧本,但改say.groovy
到
class Say {
def say(msg) {
println msg
}
}
我的目标是在增加方法添加到主脚本中,而不是创建已加载脚本的实例 – IttayD 2010-05-20 17:03:04
添加了不使用新实例的方法 – 2010-05-20 18:07:37