2017-09-19 79 views
1

我知道Java腳本API(它運行用JavaScript,Groovy等編寫的腳本)和幾種表達式語言(SpEL,JEXL,JUL)。但是可以在Java本身編寫腳本,然後從Java代碼調用該腳本?從Java源代碼調用用Java編寫的腳本

我發現了一些關於以編程方式通過tools API編譯Java的信息,但這不像腳本(即上下文不同)。

我想是這樣的劇本我的Java代碼中執行:

int i = 42 + getFoo(); 
setBar(i); 

現在 - 當與提供getFoosetBar方法上下文中調用 - 它應該評估i並調用該方法。

+4

所以你正在尋找像JShell的REPL? –

+0

JSell可以成爲Java 9的一個選項,但是我已經修復了Java 8.另一種BeanShell感覺過時了(從2005年開始)。只要JShell腳本可以從Java調用,它就可以滿足我的需求。 –

回答

2

嘗試BeanShellCompiler APIjavax.script ...

一個既有權解釋的文本輸入或編譯成字節碼,不知何故。

+0

https://code.google.com/archive/p/beanshell2/&https://github.com/ pejobo/beanshell2 –

+0

感覺就像BeanShell已經過時了,不是嗎? –

+0

請參閱beanshell2的鏈接... javax.script可能是建議的方法,但它可以解釋Java代碼。它取決於該文件可能包含的內容 - 因爲編寫簡單的解析器應該沒有問題。 –