2016-02-05 41 views
0

工作我有一個方面類,它定義一個點切割表達如下的AspectJ LTW在eclipse - 切入點不與靜態方法

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

其中executeTasks()方法是靜態的。如果方法設置爲非靜態,則方法體將在每次調用executeTasks()時執行。爲什麼我的切入點對靜態方法不起作用?

我正在使用LTW而不是彈簧。

回答

1

我剛剛試過了你的切入點表達式,它在靜態方法和非靜態方法上都能正常工作。我使用了AspectJ weaver 1.8.7。嘗試將-showWeaveInfo-verbose添加到您的aop.xml以獲取LTW上的調試信息。

<!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> 

它應該給你輸出做類似的標準錯誤:

[[email protected]] 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) 
+0

@Kris:我同意,它有兩個靜態和非靜態工作,除非你也改變了其他因素,如(子)包名稱或方法可見性。如果沒有,請顯示可重複使用的[SSCCE](http://sscce.org/)。 – kriegaex

+0

忘記將「-verbose」添加到織布工選項。我編輯了我的答案以包含該選項。 –