为什么我得到"建议尚未应用"的警告?

Man*_*lva 6 java aop aspectj ajdt

为什么以下代码:

 pointcut callsToList() : call(* List.*(..));

 before(List l) : callsToList() && target(l) {
  System.out.println("cool");
 }
Run Code Online (Sandbox Code Playgroud)

生成以下警告:

在org.eclipse.ajdt.examples.ListAdvice中定义的建议尚未应用[Xlint:adviceDidNotMatch]

我在Eclipse中工作.我安装了eclipse aspectj插件,当然我的项目是一个aspectj项目.

编辑:此外,我从ajdt插件提供的一个工作示例开始:

pointcut callsToBeginTask() : call(void IProgressMonitor.beginTask(..)); 
before() : callsToBeginTask() {
     System.out.println("cool");
};
Run Code Online (Sandbox Code Playgroud)

除了这个例子在没有警告的情况下工作的事实,我看不出任何区别......

And*_*erg 3

当您希望 AspectJ 在 OSGi 环境中工作时,您必须使用 Equinox Aspects(又名 Equinox Weaving)。这是一种与 osgi 类加载器一起使用的加载时间编织形式。

本教程有点过时,但应该可以帮助您入门:

http://www.eclipse.org/equinox/incubator/aspects/equinox-aspects-quick-start.php

当您的各个方面都针对同一个项目时,您不需要 Equinox Aspects。常规的编译时编织就可以了,但是要跨越多个捆绑包/插件,这将不起作用。