我正在使用GroovyConsole评估从外部来源获得的脚本。因此要评估的代码是动态的,我无法控制它。实际上是写到数据库中的,我必须以String的形式读取它。并不完美,但这就是事实。
我现在正在做什么:
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),并且由于该脚本大于64K,它会抛出
java.lang.RuntimeException: Method code too large!
。我试图将脚本转储到文件中并使用BufferedReader,但是它引发了相同的异常。
那么,是否有更好的方法可以从Groovy方法中评估动态Groovy代码?
最佳答案
问题是您的脚本达到了方法的Java限制。我认为唯一的解决方案是以某种方式将您的脚本拆分为许多脚本。
See this answer
关于grails - 在GroovyShell中评估大型Groovy脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19399718/