如何将java对象传递给java中调用的groovy方法?
我正在调用groovy方法,该方法从java获取一个POJO,但得到异常 详情如下: 文件:SampleScript2.groovy如何将java对象传递给java中调用的groovy方法?,java,groovy,Java,Groovy,我正在调用groovy方法,该方法从java获取一个POJO,但得到异常 详情如下: 文件:SampleScript2.groovy import com.hrishikeshmishra.sb.Obj; class SampleScript2 { String process(Obj obj) { if(obj.num ==10) return "equal"; else return "not-equ
import com.hrishikeshmishra.sb.Obj;
class SampleScript2 {
String process(Obj obj) {
if(obj.num ==10)
return "equal";
else
return "not-equal"
}
}
文件:com/hrishikeshmishra/sb/Obj.java
package com.hrishikeshmishra.sb;
class Obj {
public int num;
public Obj(int num) {
this.num = num;
}
}
文件:com/hrishikeshmishra/sb/JavaGroovyTest.java
package com.hrishikeshmishra.sb;
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import java.io.File;
import java.io.IOException;
public class JavaGroovyTest {
static final GroovyClassLoader classLoader = new GroovyClassLoader();
public static void main(String[] args) throws IllegalAccessException, IOException, InstantiationException {
example6();
}
private static void example6() throws IOException, IllegalAccessException, InstantiationException {
Class groovy = classLoader.parseClass(new File("/Users/hrishikesh.mishra/hrishi/codes/sb/groovyjava/src/main/resources/SampleScript2.groovy"));
GroovyObject groovyObj = (GroovyObject) groovy.newInstance();
String output = (String) groovyObj.invokeMethod("scriptSays", new Object[] { new Obj(12)});
System.out.println(output);
}
}
例外情况:
Exception in thread "main" org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: SampleScript2.scriptSays() is applicable for argument types: (com.hrishikeshmishra.sb.Obj) values: [com.hrishikeshmishra.sb.Obj@51931956]
这是因为您试图调用一个名为
scriptSays()
的方法,但您定义的方法实际上被称为process()
。错误非常明确:SampleScript2.groovy中的类没有您试图调用的方法:scriptSays()
@HrishikeshMishra欢迎您。如果有用的话,请考虑标记为已接受的答案(点击滴答声)。