有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于实例化另一个java文件的groovy java代码

我想编写一个程序来动态调用另一个Java类(未编译)中的方法,该类的文件名和位置是给定的。为此,我使用了以下代码,但它不起作用

//folder location of my java file to be loaded
String url = "C:/Temp/testcases/test.java"; 
//name of the java file to be loaded
String classname = "test.java"; 
this.class.classLoader.rootLoader.addURL(new URL(url+str));
Class.forName(str).newInstance();

上面的实例无法调用我要动态加载的java文件中的方法。它的错误是什么


共 (2) 个答案

  1. # 1 楼答案

    我同意你的回答。上述代码中的错误与新URL(C://…)有关。如果我正确地提到了包名wrt path,它应该可以工作。无论如何,我处理groovy文件,所以我发现这段代码比普通类更有效。我上面提到的名字

    def sourceString = (new File(C:/xyz.groovy)).getText()
    ClassLoader parent = getClass().getClassLoader();
    GroovyClassLoader loader = new GroovyClassLoader(parent);
    Class groovyClass = loader.parseClass(sourceString);
    template =  groovyClass.newInstance()
    
  2. # 2 楼答案

    类加载器只能加载已编译的类。它无法打开Java源文件,动态编译它们,并加载它们的类

    此外,类名与文件名不同