使用正确的参数在groovy脚本之间调用方法

时间:2017-02-10 15:53:57

标签: java grails groovy soapui

我刚开始学习groovy并尝试将我的java代码转换为groovy脚本。通常,java允许您拥有一个只有可以从其他类调用的方法的类。我想把它翻译成groovy。我有一个文件 - 让我们称之为File1-这样的方法:

def retrieveData(String name){  
// do something
}

在第二个文件File2中,我像这样调用File1:

def file1Class = this.class.classLoader.parseClass(new File("../File1.groovy"))

然后尝试像这样调用File1中的方法:

def data = file1Class.retrieveData("String")

但它一直给我这个错误--MissingMethodException:

groovy.lang.MissingMethodException: No signature of method: static File1.retrieveData() is applicable for argument types: (java.lang.String) values: [String] Possible solutions: retrieveData(java.lang.String)

所以它确实认识到我发送了正确数量的参数甚至是正确的对象,但它没有运行应该的方法? 有什么我想念的吗?我试图从方法中删除对象定义 - 换句话说 - 像这样:

def retrieveData(name){  
// do something
}

但这也不起作用。我对下一步将会是什么一无所知。任何人都可以帮助推动我朝着正确的方向前进吗?我将不胜感激。

1 个答案:

答案 0 :(得分:0)

请参阅this StackOverflow reponse中提供的答案。

使用GroovyScriptEngine classGroovyScriptEngine做了什么?来自文档:

  

特定的脚本引擎能够重新加载修改过的脚本以及   正确处理依赖脚本。

请参阅下面的示例。

def script = new GroovyScriptEngine( '.' ).with {
  loadScriptByName( '..\File1.groovy' )
} 
this.metaClass.mixin script

retrieveData()

请注意我们如何使用loadScriptByName方法

  

获取有问题的scriptName类,以便您可以   使用缓存和重新加载来实例化Groovy对象。

这将允许您随意访问文件中的Groovy对象。