在Groovy Console我有这个:
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)
}
编辑:我提交了错误报告:https://svn.dentaku.codehaus.org/browse/GROOVY-4214
答案 0 :(得分:3)
当它出现在线上时:
this.metaClass.mixin script
加载的脚本可能引用了加载它的类(这个类),因此当你尝试混合它时,你会得到一个无限循环。
解决方法是:
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
}
}