我试图在java中使用GroovyClassLoader来执行Groovy中的一个方法。
我已经创建了一个parseClass,公共方法,它创建了一个GroovyClassLoader实例,parseClass,然后创建了类的一个新实例,在类中调用了一个方法。
public class Gtest{
public static void main(String args[])throws IOException , InstantiationException ,IllegalAccessException {
GroovyClassLoader gcl = new GroovyClassLoader();
Class cls = gcl.parseClass("class Foo { void doIt() { println \"ok\" } }");
Object obj = cls.newInstance();
if(obj == null){
System.out.println("null");
}
obj.doIt();
}
}错误: Gtest.java:22:错误:找不到符号obj.doIt();^符号:方法doIt()位置:对象1类型的变量obj
发布于 2019-08-26 22:27:40
这是因为object类没有doIt()方法。您必须使用以下语法来调用您的方法。
Method sumInstanceMethod
= Operations.class.getMethod("doIt");
Object result
= sumInstanceMethod.invoke(obj, null);发布于 2019-08-27 21:13:56
System.out.println(cls.getDeclaredMethod( "doIt", new Class[] {}).invoke( obj, new Object[] {} ));https://stackoverflow.com/questions/57665414
复制相似问题