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コードを評価するより良い方法はありますか?