2017-07-25 120 views
0

我在Eclipse中創建了一個Groovy項目。 我想建立一個可執行的jar文件,將我的一些groovy文件源保存在jar外面,這樣它們可以在運行時修改和重新加載。導入外部(未編譯)groovy類並將它們保存在罐子外

我知道我可以使用的GroovyScriptEngine做到這一點:

Class modelClass = new GroovyScriptEngine("path_to_file").loadScriptByName("Model.groovy") ; 
Object modelInstance = modelClass.newInstance() ; 

現在,我的問題是:是否有可能簡單地說,比如在我的主類,用途:

import Model 

class Main { 
static void main(String[] args) { 
    Model model = new Model(args) 
    ... 
} 

我希望我的問題已經很清楚了...... 非常感謝你的幫助!

+0

相當複雜(和未完成)的項目:派生自己的GroovyClassLoader,當沒有找到類時編譯grovvy源ad hoc –

回答

0

如果你的jar在groovy的情況下,那麼你可以添加到類路徑文件夾與groovy文件(類)。 groovy classloader會在訪問時自動編譯它們。

否則創建一個Groovy引擎,添加到與常規的文件路徑目錄..

0

事情已經對它們進行編譯。如果你把它們放在jar外面,但是在你的類路徑中,你必須將它們編譯成.class文件以供系統選擇它們。

最好的辦法是使用你提到的ScriptEngine,在內部「編譯」它們(不保存類)。這使得.jar中的類有點難以靈活地訪問外部groovy腳本,但這可能是最好的。