在 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
最佳答案
当它到达终点线时:
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
}
}
关于groovy - 为什么我会收到 StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873964/