AspectJ - 编织jdk和非jdk类 - NoClassDefFoundError

时间:2014-06-04 16:00:16

标签: java eclipse aspectj

我在eclipse中设置了三个项目,

1)aspects_project - 这个AspectJ项目包含一个方面'testaspect'我想编织成某些JDK类以及application_project中的类

2)application_project - 此项目在Aspect Path上有aspects_project。

3)jdk_project - 此项目的Aspect Path上有aspects_project,InPath上有classes.jar。它被设置为输出classes_weaved.jar

当我运行application_project并将classes_weaved.jar预先渲染到bootclasspath时,application_project类中的编织建议工作正常,但是编译到jdk类中的建议给了我运行时错误:

Exception in thread "main" java.lang.NoClassDefFoundError: testaspect

因此,编写到jdk类中的建议无法找到包含建议的方面类。

1 个答案:

答案 0 :(得分:0)

因为classes_weaved.jar位于bootclasspath上,所以还需要确保方面在类加载器层次结构的该级别上可见。该方面可能在常规类路径上,但由于类加载器可见性规则,这些jdk类无法在下面看到它'您可以确保将testaspect放入classes_weaved.jar,也可以将aspects_project的输出添加到bootclasspath。

要做前者(将它添加到classes_weaved.jar)我认为你可以将aspects_project放在jdk_project的inpath(以及aspect路径)上。