【问题标题】:Is it possible to have an aspect around other aspects是否有可能围绕其他方面有一个方面
【发布时间】:2011-08-23 22:48:27
【问题描述】:

我的问题与this question有关

我们有不同的切面类在应用程序的不同部分(Swing 中的胖客户端)执行 @around 建议以测量执行时间。

我有另一个方面 (ExceptionHandler) 对我编写的所有方面方法执行 @around。

我这样做是为了避免创建的方面会引发异常并使客户端应用程序失败。所以基本上,我尝试捕获我的其他 @around 方法的 Proceed 并记录出现的异常。当我检测到它来自progressingJoinPoint时,我只抛出一个异常

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

这样做有效吗?

在带有 AJDT 的 Eclipse 中,应用运行良好,我测试了 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 中并且方法在那里!!!!!!?????????????

为什么会出现这个错误...?

我一无所知。

【问题讨论】:

    标签: ant aspectj


    【解决方案1】:

    终于找到问题了。我们的应用程序依赖于包含方面的通用模块 jar。

    基本包名称相同:com.xxx.aop 和我们用于方面的基类名称相同!!!!所以加载了 2 个 com.xxx.aop.AspectBase.class。

    由于我们在 ant 构建文件中使用了一个标志来启用是/否的编译时编织,因此我们的 AspectBase.class 中的一个没有被编织,而另一个被编织。

    不敢相信我以前没有看到过!!!!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 2011-08-18
      • 2020-10-08
      • 1970-01-01
      • 2023-03-31
      • 2012-05-21
      • 1970-01-01
      • 2014-12-26
      相关资源
      最近更新 更多