我刚开始学习groovy并尝试将我的java代码转换为groovy脚本。通常java允许你只有一个类,只有你可以从其他类调用的方法。我想把它翻译成groovy。我有一个文件 - 让调用它File1-这样的方法:使用正确参数的groovy脚本之间的调用方法
def retrieveData(String name){
// do something
}
,并在第二个文件,文件2,我把文件1这样的:
def file1Class = this.class.classLoader.parseClass(new File("../File1.groovy"))
,然后尝试拨打方法文件1这样的:
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
}
但是这也没有效果。我对下一步是什么感到无能为力。任何人都可以请帮助推动我在正确的方向吗?我将不胜感激。
我试过,但它完全忽略了类路径。我将必要的jar文件放入ext文件夹中,以便soapUI可以访问它,并且它使用我在问题中引用的方法,但是当我这样做时,它会抛出MultipleCompilationErrorsException:无法解析HSSFCell类 – droidnoob
你想要打个电话号码吗?如果是这样,[检查这个答案](http://stackoverflow.com/questions/15565961/groovyscriptengine-load-groovy-scripts-from-subfolder#15566768),其中描述从子文件夹加载。另外,如果您正在调用由相对路径定义的资源,则需要在Groovy类之间进行切换时需要格外小心。 – Nathan
File1.groovy和持有File2.groovy的xml都在Documents文件夹中。是的,我必须通过名称来编辑loadScript脚本:loadScriptByName('../../../../Users/myname/Documents/File1。groovy')'但是jar文件应该到SOAPUI_HOME/bin/ext文件夹。那为什么不看它呢?在阅读File1.groovy? – droidnoob