2011-06-23 2 views
-2

Salut je l'ai écrit le script groovy comme:Appel de script groovy

class Test{ 
    public Object testComposedRules() { 
     String ruleACode = {age, product -> def discount = 0; if(age<10 && product=="Toys") discount=10; println "hi $discount"; return discount}; 
     Closure ruleA = (Closure) Eval.me(ruleACode); 

     Object object = ruleA.call(9, "Toys"); 

     return object; 
    }  
} 

quand j'ai essayé d'accéder à cette classe d'une autre classe principale; je ne peux pas obtenir la classe de test

public static void main() { 
    Test a = new Test(); 
    a.testComposedRules(); 
} 

Si une erreur survient, elle n'existe pas; est-il un moyen d'accéder aux fonctions groovy de la classe java;

+0

Comment compilez-vous les classes? Sont-ils dans le même paquet? Quelle est l'erreur réelle (un stacktrace aide toujours) –

+0

Aussi, vous semblez stocker une fermeture dans une chaîne 'ruleACode', puis essayer de' Eval.me' cette chaîne. 'ruleACode' aura la valeur' Script1 $ _run_closure1 @ f00e0f' (ou similaire), donc l'Eval.me échouera. –

Répondre

0

Je suppose que la différence de cas de A dans la définition et l'appel est une faute de frappe dans la question?

Sinon, essayez A.testComposedRules();

+0

salut merci pour répondre et désolé c'était erreur typo en question mais mon problème est quand j'essaie de construire mon application il me donne l'erreur ne peut pas trouver symbole Test de classe j'ai testé de la cible qu'il ne crée pas de fichier classe pour classe de script groovy – jignasha

+0

J'ai ajouté gmaven plugin mais je ne reçois pas la classe; je reçois une erreur de compilation qui ne peut pas trouver le symbole – jignasha