Java Can';t使用AspectJ向外部jar类添加执行切入点。为什么?

Java Can';t使用AspectJ向外部jar类添加执行切入点。为什么?,java,eclipse,aspectj,Java,Eclipse,Aspectj,我在尝试检测SWT的Shell.setText()何时被执行时遇到了一些问题 我创建了两个简单的切入点,其中一个有效,另一个无效: 据我所知,这是因为AspectJ没有检测到它的类路径中的SWT库 理想情况下,我希望使用加载时编织,因此我在Eclipse的LTW类路径中添加了以下Jar文件: org.eclipse.swt.win32.win32.x86_64_3.102.0.v20130311-2025.jar 我在Hello World SWT项目中的一组“引用库”中找到了它 但是问题仍

我在尝试检测SWT的
Shell.setText()
何时被执行时遇到了一些问题

我创建了两个简单的切入点,其中一个有效,另一个无效:

据我所知,这是因为AspectJ没有检测到它的类路径中的SWT库

理想情况下,我希望使用加载时编织,因此我在Eclipse的LTW类路径中添加了以下Jar文件:

org.eclipse.swt.win32.win32.x86_64_3.102.0.v20130311-2025.jar
我在Hello World SWT项目中的一组“引用库”中找到了它

但是问题仍然是一样的,Eclipse(和我的小应用程序)都将
执行标记为
切入点,而不是应用于任何东西


有人能告诉我原因吗?

有两个原因

Eclipse的AspectJ插件不会识别任何应用于项目范围之外的内容(在本例中为SWT),因此将我们的结论从上下文信息中去掉将毫无意义。另外,尽管
Shell
继承了
setText()
方法,但它的
setText()
是在
Decorations
中定义的,因此AspectJ不会像我写的那样匹配它

这就是原因