2011-07-12 62 views
1

我的問題是有關this question是否有可能有各地的其他方面

我們有不同方面的類上的應用程序(在Swing胖客戶端)的不同部分做@Around建議一個方面來衡量的執行時間。

我有另一個方面(ExceptionHandler)在我寫的所有方面的方法做@around。

我這樣做是爲了避免創建的方面會拋出異常並使客戶端應用程序失敗。所以基本上,我試着抓住繼續我的其他@around方法,並只記錄出現的異常。我只是拋出一個例外,當我發現它來自進程加入點

if (joinPoint.getSignature().getDeclaringTypeName().equalsIgnoreCase("org.aspectj.lang.ProceedingJoinPoint")) { 
      throw exception; 
     } 

這是否有效?

在帶AJDT的Eclipse中,應用程序運行正常,我測試了ExceptionHandler並且它按預期工作。

但在其他環境。 (集成),應用程序就會失敗,因爲它滿足了exceptionHandler的建議一條線,此錯誤

Exception in thread "main" java.lang.NoSuchMethodError:  com.xxx.yyy.aop.aspect.ExceptionHandlerAspect.aspect 
Of()Lcom/xxx/yyy/aop/aspect/ExceptionHandlerAspect; 
    at  com.xxx.yyy.aop.aspect.ecs.AspectBaseEcs.inspectLoginInfo(AspectBaseEcs.java:65) 
    at com.xxx.yyy.app.es.security.Security.loadApplications(Security.java:172) 
    at com.xxx.yyy.app.es.gui.VSDlgLogin.loadSecurity(VSDlgLogin.java:346) 
    at com.xxx.yyy.app.es.ApplicationSuite.start(ApplicationSuite.java:839) 
    at com.xxx.yyy.app.es.ApplicationSuite.main(ApplicationSuite.java:501) 

我也反編譯代碼,看是否aspectOf()被編織成我的ExceptionHandler和方法是存在的! !!!!!! ???????????

爲什麼這個錯誤會上升......?

我很無能。

回答

0

終於找到了問題。我們的應用程序也依賴於包含方面的通用模塊jar。

基本包的名稱是一樣的:com.xxx.aop和我們用於我們方面的基類是同名的!所以2 com.xxx.aop.AspectBase.class被加載。

由於我們在我們的ant構建文件中使用了一個標誌來啓用編譯時織入的yes/no,所以我們的一個AspectBase.class不是編織而另一個是編織的。

不能相信我以前沒有看到過!!!!!

相關問題