【问题标题】:AspectJ not capture calls from jar fileAspectJ 不从 jar 文件中捕获调用
【发布时间】:2015-12-22 12:50:58
【问题描述】:

我想在调用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 文件调用?

【问题讨论】:

  • 这是一种新的声明方面的方式吗?我一直以eggsylife.co.uk/2010/02/03/… 之类的方式使用它
  • 知道你使用的是普通的 aspectJ,尽管我的链接是关于 spring 方面的
  • 是的。它是普通的 AspectJ。

标签: java eclipse aspectj


【解决方案1】:

您需要为 Eclipse (AJDT) 设置 AspectJ 插件,以便它也可以编织库代码,而不仅仅是您自己的类文件。您可以通过转到Project Properties -> AspectJ Build -> Inpath tab 并添加您想要由您的方面编织的 jar 文件来执行此操作。这是对话框的屏幕截图: 除非您在同一属性页面的第三个选项卡上设置Output jar,否则像这样编织的库类将转储到您的输出类文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多