2014-09-01 33 views
0

我在文件「shared.groovy」像這樣定義的方法:如何從另一個腳本調用一個腳本中定義的靜態方法?

def static configure() 
{ 
    ..... 
} 

和我在同一個目錄,在這裏我需要調用configure()方法的另一個腳本文件。我想是這樣

shared.configure() 

,但得到此異常:

FATAL: No such property: shared for class: script14095498929361009943305 
groovy.lang.MissingPropertyException: No such property: shared for class: script14095498929361009943305 

另一個想法?

回答

1

您可能需要先加載文件。

我只知道兩種方法來動態加載常規在運行時

  1. 封閉件(有以下語法:{inoutput,inoutput2 - > // Yourprocessing使用輸入&輸出PARAMS})
def sh = new GroovyShell() 
File f = new File("Yourfile"); 
def closure = sh.evaluate(f.text); 
GroovyClassLoader gcl = new GroovyClassLoader(); 
File f = new File("Yourfile"); 
Class tempClass = gcl.parseClass(f); 
tempClass.configure(); 

我不知道有什麼方法來解析的方法,這就是爲什麼我總是使用這些方法之一(我甚至產生dummyclasses,把我需要的靜態方法看來,這作品完美無瑕)

+0

如何通過此tempClass對象調用靜態方法? – user626528 2014-09-02 06:07:54

+0

正如我在示例中所做的那樣,通過直接調用它來代替Class xyz = new tempClass(); ,你直接調用tempClass – Xavjer 2014-09-02 06:33:32

+0

啊。我決定這是類加載代碼的一部分。 – user626528 2014-09-02 07:54:48

2

One.groovy:

static void m1() { 
    println 'One' 
} 

Two.groovy

​​

它工作正常。

+0

正是我所做的,導致異常。也許是因爲classpath未被外部應用程序設置爲包含腳本的文件夾。 – user626528 2014-09-01 10:06:09

+0

哪個常規版本?隨着2.4.0-beta2它完美的作品。 – Opal 2014-09-01 10:29:09

相關問題