Java:GroovyClass加载程序:无法在 Groovy Class 中找到方法的符号

Java : GroovyClassLoader : cannot find symbol for method in Groovy Class

我正在尝试使用 GroovyClassLoader in java 来执行 Groovy Class 中的方法。

我创建了一个 Java Class, pubic 方法,它创建了一个 GroovyClassLoader 的实例,parseClass 然后创建一个新的class的实例,调用class中的一个方法。


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() location:Object类型的变量obj 1 个错误

这是因为对象 class 没有 doIt() 方法。 您必须使用以下语法来调用您的方法。

Method sumInstanceMethod
  = Operations.class.getMethod("doIt");
 Object result
      =  sumInstanceMethod.invoke(obj, null);
System.out.println(cls.getDeclaredMethod( "doIt", new Class[] {}).invoke( obj,  new Object[] {} ));