如何从另一个脚本调用一个脚本中定义的静态方法?

时间:2014-09-01 05:39:43

标签: groovy

我在文件中定义了一个方法" 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

另一个想法?

3 个答案:

答案 0 :(得分:3)

One.groovy:

static void m1() {
   println 'One'
}

Two.groovy

One.m1()

工作正常。

答案 1 :(得分:2)

您可能需要先加载文件。

我只知道在运行时动态加载groovy的两种方法

  1. 闭包(具有以下语法:{inoutput,inoutput2 - > //使用输入和输出参数进行处理}}
  2. def sh = new GroovyShell()  
    File f = new File("Yourfile");  
    def closure = sh.evaluate(f.text);
    
    1. GroovyClassLoader gcl = new GroovyClassLoader();
      File f = new File("Yourfile");
      Class tempClass = gcl.parseClass(f);
      tempClass.configure();
      

      我不知道有什么办法只解析一个方法,这就是为什么我总是使用这些方法之一(我甚至创建了虚拟类并将我需要的静态方法放入其中,这完美无缺)

答案 2 :(得分:1)

这似乎在Groovy 2.5.3中已解决。在此之前,您需要import static shared.configure(除import shared之外)然后才能呼叫shared.configure()