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:
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
Vous devez vous connecter pour publier un commentaire.
Parce que vous êtes de passage à trois arguments pour un quatre arguments de la méthode. Aussi, vous n'êtes pas à l'aide de la fermeture.
Si vous souhaitez spécifier les opérations à faire sur le dessus de la
source
contenu, puis d'utiliser un système de fermeture. Il serait quelque chose comme ceci:Si vous aurez toujours le swap de cordes, de passer les deux, que votre signature de la méthode déjà membres:
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, 'Visa', 'Passport!!!!')
Oui.
copyAndReplaceText()
est le nom de la méthode, et vous êtes de passage à quatre arguments: 1ersource
, 2edest
, 3e'Visa'
et 4e'Passport!!!!'
J'espère que vous aimez groovy. J'ai trouver que c'est une joie de travailler avec 🙂
bien honnêtement, je n'ai jamais entendu parler de groovy avant jusqu'à vendredi, j'ai dû faire des recherches sur le mien, maintenant je suis bloqué à cette exigence. rechercher et remplacer dans un fichier temporaire nommé xxxx~, texte ancien avec le nouveau texte ne sais pas comment le faire
Mais ouais j'ai compris groovy est très agréable, il n'est pas aussi rigide que java, même si elle est basée sur elle.
OriginalL'auteur Will
Pour aider les autres bug-chasseurs. J'ai eu cette erreur parce que la fonction n'existait pas.
J'ai eu une erreur d'orthographe.
OriginalL'auteur Glycerine
Cela peut-être aussi parce que vous pourriez avoir donné un nom de classe avec toutes les lettres en minuscules quelque chose qui groovy (savoir de la version 2.5.0) ne prend pas en charge.
classe nom de l'Utilisateur est accepté, mais l'utilisateur n'est pas.
OriginalL'auteur Bhuvnesh Incedo
Vous pouvez également obtenir cette erreur si les objets que vous êtes de passage à la méthode sont de l'ordre. En d'autres termes dire que votre méthode prend, dans l'ordre, une chaîne de caractères, un entier, et une date. Si vous passez un jour, puis une chaîne de caractères, un entier, vous obtiendrez le même message d'erreur.
OriginalL'auteur Sulteric