IBM JDK throwing error 0 class {0} 已经被编织并且没有在可重织模式下构建 [Xlint:nonReweavableTypeEncountered]

IBM JDK throwing error 0 class {0} is already woven and has not been built in reweavable mode [Xlint:nonReweavableTypeEncountered]

我们有几个方面,方面 类 是用@Aspect 定义的,并在 METAINFO/aop 中声明了相同的方面。xml:

aop.xml

<aspectj>
    <weaver options="-Xset:weaveJavaxPackages=true">
       <include within = "Test"/>
    </weaver>
    <aspects>
        <aspect name = "Test"/>
 </aspects>
</aspectj>

以下错误仅在使用 WebSphere 的 IBM JDK 环境中抛出。

异常:

Error at Test.java::0 class {0} is already woven and has not been built in reweavable mode [Xlint:nonReweavableTypeEncountered]


相同的代码适用于 Tomcat + Oracle JDK 堆栈组合。

根据 AspectJ 配置。

A​​spect 不需要将其添加到 Weaver 标签中,这导致在 WAS 的 SystemOut.log 中抛出错误。

<aspectj>
    <weaver options="-Xset:weaveJavaxPackages=true">
      // add only actual classes to be woven.
    </weaver>
    <aspects>
        <aspect name = "Test"/>
 </aspects>
</aspectj>

一个aop.xml文件包含两个关键部分:"aspects"为编织器定义一个或多个方面,并控制在编织过程中使用哪些方面; "weaver" 定义编织器选项以及应编织的类型。

https://www.eclipse.org/aspectj/doc/next/devguide/ltw-configuration.html