我正在使用GroovyConsole来评估从外部源获取的脚本。所以要评估的代码是动态的,我无法控制它。实际上是写入数据库,我必须将其作为字符串读取。不完美,但就是这样。
我现在在做什么:
private GroovyShell shell
def processScript( def script){
if (script) {
try{
shell.evaluate (script, 'some_random_name')
}catch( e ){
log.warn "Could not process script: $e"
}
}
}
这通常有效。但是现在我们得到了一个大脚本(~3000 LOC)并抛出java.lang.RuntimeException: Method code too large!
因为脚本大于64K。
我尝试将脚本转储到文件中并使用BufferedReader,但它会抛出相同的异常。
那么有更好的方法可以在Groovy方法中评估动态Groovy代码吗?