【发布时间】: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 中并且方法在那里!!!!!!?????????????
为什么会出现这个错误...?
我一无所知。
【问题讨论】: