gpt4 book ai didi

GroovyClassLoader 和导入

转载 作者:行者123 更新时间:2023-12-04 06:26:47 25 4
gpt4 key购买 nike

我在 Java 类中使用 GroovyClassLoader 来解析某个(理想情况下是复杂的)groovy 文件(将在下一步中执行):

调用 MyClass.java

final Class parsedClass = groovyClassLoader.parseClass(groovyFile);

知道:
  • Groovy 文件需要存储在文件系统中,因为需要在不重新部署的情况下进行更改。
  • 这个 groovy 文件需要几个导入:

  • GroovyFile.groovy 导入
    import com.my.import.one.Import1DTO
    import com.my.import.two.Import2DTO
    import com.my.import.three.Import3DTO
    import com.my.import.four.Import4DTO
    import com.my.import.five.Import5DTO

    当调用 parseClass 方法时,会引发以下异常:

    异常(exception)
    unable to resolve class com.my.import.one.Import1DTO;
    unable to resolve class com.my.import.two.Import2DTO;
    unable to resolve class com.my.import.three.Import3DTO;
    unable to resolve class com.my.import.four.Import4DTO;
    unable to resolve class com.my.import.five.Import5DTO;

    在解析基类之前,我可以在不解析每个导入类的情况下获得我期望的行为吗?

    谢谢!

    最佳答案

    这是一个使用 addClasspath() 的示例 MyClass.java方法在 GroovyClassLoader

    import groovy.lang.GroovyClassLoader;

    public class MyClass {
    public static void main(String... args) {
    GroovyClassLoader groovyClassLoader = new GroovyClassLoader();

    // add "lib" to the classpath
    groovyClassLoader.addClasspath("lib");

    String groovyFile = "GroovyFile.groovy";
    Class parsedClass = groovyClassLoader.parseClass(groovyFile);
    System.out.println("class is " + parsedClass.toString());
    }
    }

    我假设 DTO 是用 Groovy 编写的,并且我们使用“myimport”,因为“my.import.x”将由于非法语法而失败。如果我们有一个像这样的“lib”目录,带有编译的类:
    lib/com/myimport/one/Import1DTO.groovy
    lib/com/myimport/one/Import1DTO.class
    lib/com/myimport/two/Import2DTO.groovy
    lib/com/myimport/two/Import2DTO.class

    并且 GroovyFile.groovy 存在于主目录中。例如
    import com.myimport.one.Import1DTO
    import com.myimport.two.Import2DTO

    println "hi there"

    那么上面的Java代码对我有用。

    我在类路径上使用 Groovy 2.2.1 和 groovy-all-2.2.1.jar(用于 GroovyClassLoader)。

    关于GroovyClassLoader 和导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884218/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com