【问题标题】:AspectJ - weaving jdk and non-jdk classes - NoClassDefFoundErrorAspectJ - 编织 jdk 和非 jdk 类 - NoClassDefFoundError
【发布时间】:2014-06-04 16:00:15
【问题描述】:

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

1) aspect_project - 这个 AspectJ 项目包含一个方面“testaspect”,我想将其编织到某些 JDK 类以及 application_project 中的类中

2) application_project - 该项目在其方面路径上有 aspect_project。

3) jdk_project - 该项目在其 Aspect Path 上有 aspect_project,在其 InPath 上有 classes.jar。设置为输出 classes_weaved.jar

当我在 bootclasspath 中预先设置 classes_weaved.jar 运行 application_project 时,application_project 类中的编织建议工作正常,但编织到 jdk 类中的建议给了我运行时错误:

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

所以编织到 jdk 类中的通知找不到包含通知的切面类。

【问题讨论】:

    标签: java eclipse aspectj


    【解决方案1】:

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

    要执行前者(将其添加到 classes_weaved.jar),我认为您可以将 aspect_project 放在 jdk_project 的 inpath(以及 aspect 路径)上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多