我正在使用 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 代码?