GroovyClassLoader和导入
发布时间:2020-12-14 16:23:07 所属栏目:大数据 来源:网络整理
导读:我在我的 Java类中使用GroovyClassLoader来解析某个(理想情况下很复杂的)groovy文件(将在下一步执行): 在MyClass.java中调用 final Class parsedClass = groovyClassLoader.parseClass(groovyFile); 知道: Groovy文件需要存储在文件系统中,因为需要在不重
我在我的
Java类中使用GroovyClassLoader来解析某个(理想情况下很复杂的)groovy文件(将在下一步执行):
在MyClass.java中调用 final Class parsedClass = groovyClassLoader.parseClass(groovyFile); 知道: > 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方法时,此异常引发: 例外 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上的addClasspath()方法
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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |