私はgroovyメソッドを呼び出していますが、Javaから1つのPOJOを取りますが、例外が発生します。javaオブジェクトをJavaで呼び出されるGroovyメソッドに渡すにはどうすればよいですか?
import com.hrishikeshmishra.sb.Obj;
class SampleScript2 {
String process(Obj obj) {
if(obj.num ==10)
return "equal";
else
return "not-equal"
}
}
ファイルSampleScript2.groovy: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: [[email protected]]
誤差は非常に明示的である:クラスSampleScript2.groovyには、あなたが呼び出しようとしているメソッドはありません: 'scriptSays()' – alfasin