无法使用AspectJ向外部jar类添加执行切入点。为什么?

时间:2013-04-18 21:45:08

标签: java eclipse aspectj

我在尝试检测SWT的Shell.setText()何时正在执行时遇到了一些麻烦。

我创建了两个简单的切入点,一个工作,另一个不工作:

enter image description here

根据我的理解,这是因为AspectJ没有检测到它的类路径中的SWT库。

理想情况下我想使用Load-Time-Weaving,所以我在Eclipse的LTW-Classpath中添加了以下Jar文件:

org.eclipse.swt.win32.win32.x86_64_3.102.0.v20130311-2025.jar

我在Hello World SWT项目的“参考图书馆”中找到了。

但问题仍然存在,Eclipse(和我的小应用程序)都标记execution切入点不适用于任何东西。

有人能指出原因吗?

1 个答案:

答案 0 :(得分:2)

有两个原因。

Eclipse的AspectJ插件不会识别任何适用于项目范围之外的东西(在本例中为SWT),因此从上下文信息中得出结论会让我们无处可去。此外,尽管Shell继承了setText()方法,但setText()中定义了Decorations,因此我不会像我所写的那样匹配它。

这就是原因。