为什么执行以下代码:

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

 before(List l) : callsToList() && target(l) {
  System.out.println("cool");
 }

生成以下警告:



我正在Eclipse中工作。我安装了eclipse aspectj plugin,当然我的项目是一个AspectJ项目。

编辑:此外,我从ajdt插件提供的一个工作示例开始:
pointcut callsToBeginTask() : call(void IProgressMonitor.beginTask(..));
before() : callsToBeginTask() {
     System.out.println("cool");
};

除了该示例在没有警告的情况下工作外,我看不到任何区别。

最佳答案

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

本教程有些过时了,但应该可以帮助您开始:

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

当所有方面都在同一项目中定位时,则不需要Equinox方面。可以进行常规的编译时编织,但是要跨越多个包/插件,这将不起作用。

关于java - 为什么我收到 "advice has not been applied"警告?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4097160/

10-13 09:46