当前位置: 首页 > 知识库问答 >
问题:

AspectJ-编织jdk和非jdk类-NoClassDefFoundError

闻深
2023-03-14

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

1)aspects_project-该项目包含一个方面测试方面,我想编织到某些JDK类和类application_project

2) application\u project-此项目在其Aspect路径上有aspects\u项目。

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

当我运行带有类\u weaved的application\u项目时。jar预处理到bootclasspath,在application\u项目的类中编织的建议工作得很好,但在jdk类中编织的建议给了我运行时错误:

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

因此,编织到jdk类中的通知无法找到包含该通知的方面类。

共有1个答案

甄文彬
2023-03-14

因为类的编织。jar位于bootclasspath上,您还需要确保方面在类装入器层次结构的该级别可见。该方面可能位于常规类路径上,但由于类加载器可见性规则,这些jdk类无法“在下面”看到它。您可以确保TestSpect被放置到classes\u weaved中。或者您也可以将aspects\u项目的输出添加到bootclasspath。

要实现前者(将其添加到classes\uweaved.jar中),我认为可以将aspects\u项目放在jdk\u项目的inpath(以及aspect路径)上。

 类似资料:
  • 问题内容: 大家好:我试图通过查看s中一些动态创建的组件来调试一个非常奇怪的类错误。 s是我从来没有玩过的东西- 我很惊讶标准JDK类具有 空的 Class loader实例。 有人可以根据我尝试打印其装入程序的类来解释这种简单的main方法的输出,并且更笼统地说- 在JVM上的工作方式和 我们如何使用s 调试缺少的类。 public class MyClass { } 输出量 问题答案: 的ja

  • 是否有可能拥有一个Scala Maven项目,并在Scala类中编译时编织AspectJ方面? 我已经能够使加载时编织工作,但到目前为止没有成功的编译时。

  • 问题内容: 我在这里看到了很多线程,它们可以进行比较并尝试回答哪个更快:或。 查看源代码,似乎应该 慢很多 ,我的意思是它进行了许多安全检查并使用了反射。我决定进行测量,首先运行jdk-8。这是使用的代码。 我认为这里没有什么大的惊喜(JIT进行了很多优化,使这种差异不 那么大 ): 热代码的差异约为 2 倍,单次射击时间的差异更糟。 现在,我切换到jdk-9(以防万一,请构建157)并运行相同的

  • 问题内容: 仅使用编译时编织尝试为大量DTO编织默认的toString()方法。目标是使用Jackson库返回JSON表示形式。 遵循本文的建议,将其转换为注释样式的方面配置,并得到以下代码: 在结果类上运行表明它们实现了JsonToString接口,但是在任何地方都没有toString()方法的迹象。 如果我将方法名称更改为与Object.toString()不冲突的名称(例如toString2

  • 问题内容: 在我当前的项目中,我们针对JDK 1.6 Runtime环境。对于旧式放气,Xerces JAR文件捆绑在应用程序中。 这些不再需要了吧?JDK(有一段时间)在JDK中捆绑了XML解析库? 问题答案: 自1.4将JAXP添加到JRE 以来,就不再需要捆绑XML解析器。您应该使用JAXP,而不是直接调用Xerces。在内部,JRE始终捆绑并使用Xerces(带有“ com.sun”前缀)