我在 Java class
中使用 Groovy Interpreter ,我正在尝试定义一个方法并调用它,这是我的代码:
Binding binding = new Binding();
binding.setVariable("aa", 1);
binding.setVariable("bb", 2);
GroovyShell shell = new GroovyShell(binding);
shell.evaluate("int add(int a,int b){return (a+b)}");
int value =(int) shell.evaluate("add(aa,bb);");
System.out.println(value);
我有这个错误:
线程“main”中的异常groovy.lang.MissingMethodException:不 方法签名:Script2.add()适用于参数类型: (java.lang.Integer,java.lang.Integer)值:[1,2]可能 解决方案:any(),wait(),run(),run(),find(),wait(long,int)
请告诉我如何在groovy中定义一个函数以及为什么我的代码无效。
致以最诚挚的问候,
答案 0 :(得分:3)
当您使用leliminate [1;2;3;2;4] [2;3;3;5];;
时,shell会将整个脚本编译为JVM类,加载并运行它,然后返回结果。此过程对于每个GroovyShell#evaluate
调用都是独立的(请注意,该类的名称为evaluate
;该方法在Script2
中定义),因此您的方法在第二个调用中不可用调用
解决此问题的选项包括在评估之前进行简单的字符串连接(这将适用于您自己的脚本,但如果脚本中的某些内容调用Script1
)或使用更复杂的GroovyScriptEngine
,则可能会出现问题。 / p>