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