Vous n'avez pas besoin de def dans groovyConsole ou dans un script groovy. Je considère que c'est une bonne pratique de programmation de l'avoir, mais le langage fonctionnera sans cela et ajoutera ces types de variables à la liaison des scripts.
Je ne suis pas sûr du reste de votre code (car il ne sera pas compilé comme vous l'avez posté). Mais vous avez soit une version très ancienne de groovy ou autre chose qui ne va pas avec votre config ou le reste de votre code.
Avec l'ajout d'un bout de l'interface IAction manquante et classe PrintAction, je suis en mesure de le faire fonctionner sans modification:
interface IAction {
def perform(obj)
}
class PrintAction implements IAction{
def perform(obj) {
println obj
}
}
class FileWalker {
private String dir
public static void onEachFile(String dir,IAction ia) {
new File(dir).eachFileRecurse {
ia.perform(it)
}
}
}
walker = new FileWalker()
walker.onEachFile(args[0],new PrintAction())
J'ai créé un répertoire fictif avec « foo/bar » et Fichiers "foo/baz".
Si je l'enregistre à "walkFiles.groovy" et l'appeler à partir de la ligne de commande avec
groovy walkFiles.groovy foo
Il imprime:
foo/bar
foo/baz
Ceci est la dernière version de groovy:
groovy -v
Groovy Version: 1.6-RC-3 JVM: 1.5.0_16