0

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

4

1 回答 1

1

问题是您的脚本达到了方法的 java 限制。我认为唯一的解决方案是以某种方式将您的脚本拆分为多个脚本。 看到这个答案

于 2013-10-16T10:24:22.567 回答