0

-projectASTTransformationに (JAVA で) を書いています。Grails

注釈付きのクラスを別のクラスに基づいて変換したいので、別のクラスをロードして、それを分析する必要がありますAST

しかし、私は他のクラスをロードすることに成功していません:

Class.forName("OtherClass") -> ClassNotFoundException
Class.forName("OtherClass", false, classNode.getClassLoader()) -> ClassNotFoundException
OtherClass.class -> ClassNotFoundException

ASTコンパイル時にそれ自体が実行されるため、他のクラスはまだ利用できないと考えられます。

たぶん、他のクラスのソースを my で取得して、それをビルドすることは可能ASTTransformationですAST

new AstBuilder().buildFromCode { ... }

またはそのようなもの。

しかし、リソース/コードをロードする方法は?

4

1 に答える 1

0

私は今解決策を見つけました:

ClassNode classNode = (ClassNode) astNode;
classNode.getCompileUnit().getClass("de.foo.bar.OtherClass")

ClassNodeフィールド、メソッド、プロパティなどに関するすべての情報を含む新しい を作成します。

于 2012-08-28T07:38:21.647 に答える