我尝试使用此方法而不使用闭包
def copyAndReplaceText(source, dest, targetText, replaceText){
dest.write(source.text.replaceAll(targetText, replaceText))
}
def source = new File('C:/geretd/resumebak.txt') //Hello World
def dest = new File('C:/geretd/resume.txt') //blank
copyAndReplaceText(source, dest){
it.replaceAll('Visa', 'Passport!!!!')
}
但是当我运行它时,我得到了以下错误:
groovy.lang.MissingMethodException: No signature of method: ConsoleScript3.copyAndReplaceText() is applicable for argument types: (java.io.File, java.io.File, ConsoleScript3$_run_closure1) values: [C:\geretd\resumebak.txt, C:\geretd\resume.txt, ...]
Possible solutions: copyAndReplaceText(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
我做错了什么?
8条答案
按热度按时间juud5qan1#
因为你传递了三个参数给一个四个参数的方法。而且,你没有使用传递的闭包。
如果你想指定在
source
内容之上的操作,那么使用闭包。它应该是这样的:如果您总是要交换字串,请传递两者,就像您的方法签章已经声明的那样:
58wvjzkj2#
为了帮助其他的bug搜索者,我遇到这个错误是因为这个函数不存在。
我有一个拼写错误。
8fq7wneg3#
在我的例子中,它只是我有一个与函数名称相同的变量。
示例:
在后面的代码中我有一个函数:
显然Groovy语言不支持这一点(但其他语言如Java支持)。我刚刚将我的函数重命名为
executeCleanCache
,它运行得很好(或者您也可以重命名您的变量,无论您喜欢什么选项)。jhkqcmku4#
如果传递给方法的对象顺序不对,也会出现这个错误。换句话说,假设你的方法按顺序接受一个字符串、一个整数和一个日期。如果你传递一个日期,然后是一个字符串,然后是一个整数,你会得到同样的错误信息。
slmsl1lt5#
这也可能是因为您可能给了所有字母都是小写的classname,这是groovy(知道版本2.5.0)不支持的。
class name -接受用户,但不接受用户。
eeq64g8w6#
在我的例子中,问题是我在
build.gradle
文件中注解了firebase依赖项,但仍然在调试构建类型中使用:只需添加注解即可。
dgenwo3n7#
这是ionic/android应用程序的主要问题之一
请按照以下步骤操作。
1.从根文件夹中移除/删除节点模块
1.现在使用以下方法删除android平台:离子 cordova rm平台安卓
1.现在添加平台:离子 cordova 平台添加Android
1.构建Android项目:离子 cordova 建筑机器人
问题将得到解决
tktrz96b8#
也可以通过从静态方法调用示例方法来获取。解决方案。将缺少的static关键字添加到示例方法中