我想在 System.currentTimeMillis()
时执行特定操作叫做。我使用 AspectJ 来做到这一点,如下所示。
public aspect CurrentTimeInMillisMethodCallChanger {
long around():
call(public static native long java.lang.System.currentTimeMillis()) {
//provide my own implementation
}
}
此程序在 System.currentTimeMillis()
时工作正常在应用程序的任何方法中调用。
但是,当 System.currentTimeMillis()
从 jar 文件内的方法调用,然后 around 不会执行。我用过within(packageofJarFile.*)
,但它不起作用。
我正在使用 Eclipse。
请让我知道我需要在上面的代码中添加什么来支持从(特定)jar 文件的调用?
最佳答案
您需要为 Eclipse 设置 AspectJ 插件 (AJDT),以便它也可以编写库代码,而不仅仅是您自己的类文件。您可以通过转到 Project Properties -> AspectJ Build -> Inpath 选项卡
并添加您想要由方面编织的 jar 文件来完成此操作。这是对话框的屏幕截图:
像这样编织的库类将转储到输出类文件夹中,除非您在同一属性页面的第三个选项卡上设置输出 jar
。
关于java - AspectJ 不捕获来自 jar 文件的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34416329/