0
我正在使用GroovyConsole來評估從外部源獲得的腳本。所以要評估的代碼是動態的,我無法控制它。實際上寫入到數據庫中,我必須將其作爲字符串讀取。不完美,但事情就是這樣。評估GroovyShell中的大型Groovy腳本
我在做什麼現在:
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代碼?
正如我提到的問題:我在劇本沒有控制,我把它從外部來源 – moeTi
@moeTi我不覺得有什麼,如果你不能改變腳本,你可以做,這是一個JVM對方法大小的限制,並且這個腳本進入基於Groovy'Script'類的'run'方法基類 –
那麼你可以在從外部源讀取腳本後自動分割腳本。我認爲這並不容易,蝙蝠因爲Java的內在限制而沒有看到任何其他解決方案。 –