0

我有一个 groovy 脚本,需要在外部 groovy 脚本内的类中运行一个方法。我知道如何在外部 groovy 脚本中运行方法:

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

但是如果方法在一个类中呢?我试过这个,但它给了我一个错误。

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

1 回答 1

0

您可以使用 Java 反射来创建位于另一个脚本中的 Class 的新实例:

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 脚本一样。

于 2014-06-07T07:51:20.820 回答