Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GroovyClassLoader和导入_Groovy_Java 7_Groovyshell_Groovyclassloader - Fatal编程技术网

GroovyClassLoader和导入

GroovyClassLoader和导入,groovy,java-7,groovyshell,groovyclassloader,Groovy,Java 7,Groovyshell,Groovyclassloader,我在Java类中使用GroovyClassLoader解析特定(理想情况下是复杂的)groovy文件(将在下一步执行): 调用MyClass.java final Class parsedClass = groovyClassLoader.parseClass(groovyFile); 知道: Groovy文件需要存储在文件系统中,因为需要在不重新部署的情况下进行更改 此groovy文件需要几个导入: GroovyFile.groovy导入 import com.my.import.one

我在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
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;
调用parseClass方法时,此执行会引发:

例外情况

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
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;
在解析基类之前,我是否可以在不解析每个导入类的情况下获得预期的行为


谢谢

下面是一个示例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存在于主目录中。e、 g

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)。

谢谢!继续您的示例,我假设如果我对Import1DTO.groovy、Import2DTO.groovy或GroovyFile.groovy进行了一些更改,则不需要重新部署。但是,如果我使用所需的Import3DTO.class创建一个新的Import3DTO.groovy,会发生什么?