Java Grails ASTTransformation:如何加载其他类(例如class.forName(..)?

Java Grails ASTTransformation:如何加载其他类(例如class.forName(..)?,java,grails,groovy,classloader,abstract-syntax-tree,Java,Grails,Groovy,Classloader,Abstract Syntax Tree,我正在我的Grails-项目中编写一个ASTTransformation(JAVA) 因为我想基于另一个类转换带注释的类,所以我需要加载另一个类并分析它的AST 但是我没有成功加载另一个类: Class.forName("OtherClass") -> ClassNotFoundException Class.forName("OtherClass", false, classNode.getClassLoader()) -> ClassNotFoundException Other

我正在我的
Grails
-项目中编写一个
ASTTransformation
(JAVA)

因为我想基于另一个类转换带注释的类,所以我需要加载另一个类并分析它的
AST

但是我没有成功加载另一个类:

Class.forName("OtherClass") -> ClassNotFoundException
Class.forName("OtherClass", false, classNode.getClassLoader()) -> ClassNotFoundException
OtherClass.class -> ClassNotFoundException
它认为,因为
AST
本身是在编译时执行的,所以另一个类还不可用

也许可以在my
ASTTransformation
中获取另一个类的源代码,然后使用

new AstBuilder().buildFromCode { ... }
或者类似的


但是如何加载资源/代码?

我现在找到了解决方案:

ClassNode classNode = (ClassNode) astNode;
classNode.getCompileUnit().getClass("de.foo.bar.OtherClass")
创建一个新的
ClassNode
,其中包含有关字段、方法、属性等的所有信息