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)
除了这个例子在没有警告的情况下工作的事实,我看不出任何区别......
当您希望 AspectJ 在 OSGi 环境中工作时,您必须使用 Equinox Aspects(又名 Equinox Weaving)。这是一种与 osgi 类加载器一起使用的加载时间编织形式。
本教程有点过时,但应该可以帮助您入门:
http://www.eclipse.org/equinox/incubator/aspects/equinox-aspects-quick-start.php
当您的各个方面都针对同一个项目时,您不需要 Equinox Aspects。常规的编译时编织就可以了,但是要跨越多个捆绑包/插件,这将不起作用。