当前位置: 首页 > 知识库问答 >
问题:

eclipse-Pointcut中的AspectJ LTW不能与静态方法一起工作

端木震博
2023-03-14

我有一个Aspect类,它定义了一个切入点表达式,如下所示

@Pointcut("execution(* com.vg.pw.tasks.shared.*.executeTasks(..))")
public void myTraceCall() {}

其中executeTasks()方法是静态的。如果将方法设置为非静态,则每次调用executeTasks()时都会执行方法体。为什么我的切入点对静态方法无效?

我用的是LTW,不是spring。

共有1个答案

廉宇
2023-03-14

我刚刚试过你的切入点表达式,它可以在静态和非静态方法上正常工作。我使用了AspectJ weaver 1.8.7。尝试将-showWeaveInfo-verbose添加到aop中。用于LTW上调试信息的xml。

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <weaver options="-showWeaveInfo -verbose">
        <include within="q35218146..*" />
    </weaver>
    <aspects>
        <aspect name="q35218146.Aspect35218146"/>
    </aspects>
</aspectj>

它应该在stderr上为您提供类似以下内容的输出:

[AppClassLoader@14dad5dc] weaveinfo Join point 'method-execution(void q35218146.
Test35218146.executeTasks())' in Type 'q35218146.Test35218146' (Test35218146.java:6) 
advised by before advice from 'q35218146.Aspect35218146' (Aspect35218146.java)
 类似资料:
  • 当我创建RoboVM Eclipse项目时,Eclipse给了我一个例外: 同样,当我尝试转到“设置”>“RoboVM”时,我也会得到这样的消息:

  • 我的app.js: 我的Express.js: 给出错误:

  • 任何人都不知道这个错误意味着什么。

  • 根据它的Javadoc,将生成,其中的第一个值是subscribe和第一个next信号之间的经过时间。 以下测试不起作用 它将抛出异常: 我原以为经过的时间至少是1000ms,但结果只有11ms。

  • 所以,简而言之。我有两节课。 它不断地抛出错误“不能对非静态方法gameStart()进行静态引用”。我肯定我错过了一些简单的东西,但找不到了。谢了!

  • 问题内容: 我知道这会起作用: 但是如果我想打电话 我找到一些工作方法, 还有其他方法吗?我不知道这样做是否正确。您在JavaScript代码中使用类方法还是静态方法? 问题答案: 首先,请记住JavaScript主要是一种原型语言,而不是基于类的语言1。不是一个类,而是一个函数,这是一个对象。您可以使用关键字从该函数实例化一个对象,该关键字将允许您使用标准OOP语言创建类似于类的内容。 我建议大