首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroovyClassLoader与进口

GroovyClassLoader与进口
EN

Stack Overflow用户
提问于 2014-02-19 14:59:05
回答 1查看 4.1K关注 0票数 4

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

调用在MyClass.java

代码语言:javascript
复制
final Class parsedClass = groovyClassLoader.parseClass(groovyFile);

知道这一点:

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

GroovyFile.groovy imports

代码语言:javascript
复制
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方法时,这个exeception引发:

例外

代码语言:javascript
复制
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;

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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-02-20 03:38:06

下面是一个示例MyClass.java,它在GroovyClassLoader上使用addClasspath()方法

代码语言:javascript
复制
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“目录,则使用已编译的类:

代码语言:javascript
复制
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存在于主目录中。例如:

代码语言:javascript
复制
import com.myimport.one.Import1DTO
import com.myimport.two.Import2DTO

println "hi there"

然后,上面的Java代码适用于我。

我在类路径(对于GroovyClassLoader)上使用Groovy2.2.1和Groovy 2.2.1.jar。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21884218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档