comment réparer groovy.lang.MissingMethodException: Pas de signature de la méthode:

Je suis en train d'utiliser cette méthode sans fermeture

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!!!!')
}

mais quand je le lance j'obtiens l'erreur suivante:

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)

Ce que je fais mal?

À partir d'un noob en groovy: j'ai eu la même exception, mais pour des raisons différentes. J'ai défini une méthode plus tard que j'ai voulu l'utiliser dans le début du code. Lorsque je l'ai remplacé, il a travaillé.
Une autre mise en garde: Si vous appelez une méthode statique de l'extérieur de la classe à partir d'un noyau de classe sans les qualifier complètement la méthode extérieure: static class Abc { private void test() { foo(); } } private static void foo() { }

OriginalL'auteur geretd | 2013-07-01