2014-06-06 26 views
0

我有一個groovy腳本,需要在外部groovy腳本內的類中運行方法。 我知道如何將外部Groovy腳本中運行的方法:使用GroovyShell解析類

new GroovyShell().parse(new File('foo.groovy')).with { 
    method() 
    } 

但是,如果該方法是一個類裏面?我嘗試過,但它給了我一個錯誤。

new GroovyShell().parse(new File('foo.groovy')).with { 
    theclass.method() 
    } 
+1

你可以發佈一個樣本'foo.groovy'嗎?無論如何,'類似乎需要實例化 – Will

+0

'theclass.newInstance()。method()' –

回答

0

您可以使用Java反射創建位於另一種語言的新的類實例:

File sourceFile = new File("D:\\anoutherScript.groovy") 
//here you have to update your classloader with external script 
getClass().getClassLoader().addURL(sourceFile.toURI().toURL()) 
GroovyObject obj = Class.forName("ClassInAnotherObject").newInstance() 
obj.doSth() 

腳本在外部文件將是這樣的:

class ClassInAnotherObject{ 
    def doSth(){ 
    } 
} 

但腳本文件中可能有更多的類,也有更多的指令和方法調用。就像普通的groovy腳本一樣。