我希望在调用System.currentTimeMillis()
时执行特定操作。我使用如下的AspectJ来做到这一点。
public aspect CurrentTimeInMillisMethodCallChanger {
long around():
call(public static native long java.lang.System.currentTimeMillis()) {
//provide my own implementation
}
}
在应用程序的任何方法中调用System.currentTimeMillis()
时,此程序可正常工作。
但是,当从jar文件中的方法调用System.currentTimeMillis()
时,不会执行around。我使用within(packageofJarFile.*)
,但它不起作用。
我正在使用Eclipse。
请让我知道我需要添加到上面的代码中以支持来自(特定)jar文件的调用吗?
答案 0 :(得分:1)
您需要设置Eclipse的AspectJ插件(AJDT),以便它编写库代码,而不仅仅是您自己的类文件。您可以转到Project Properties -> AspectJ Build -> Inpath tab
并添加要根据方面编织的jar文件来执行此操作。这是对话框的屏幕截图:
像这样编织的库类将被转储到输出类文件夹中,除非您在同一属性页的第三个选项卡上设置了Output jar
。