| [aspectj-users] RE: Hack to get around NoSuchMethodError aspectOf exception using LTW - Aspectj 1.6.8 |
|
Thanks for the quick response. You da man!!
Initially, I added the inclusion pattern
to just the aspect tag <aspect> <!--
other stuff -- > <include
within="foo.bar.*"/> <!-- aspect class XYZ is in the foo.bar
package à </aspect>. As per your suggestion, I added the
same to the weaver tag as well :meaning: the Aspect has to be weaved with the
aspectOf method. It works !!! <weaver> <!-- other stuff -- >
<include within="foo.bar.*"/> </weaver> Thanks again, Sunder From: Andy Clement
<andrew.clement@xxxxxxxxx>
Date: Thu, 11 Mar
2010 21:17:51 -0800 Delivered-to:
aspectj-users@xxxxxxxxxxx Hello,There should be no need to add that method yourself. Are you by anychance excluding the aspect type in your LTW aop.xml configuration?That method (aspectOf) is added during weaving. If your originalannotation style aspect was built with javac rather than ajc, then itwill not have it in when the JVM starts because the weaver hasn't yetrun - thus the type must go to the load time weaver in order to befinished off. If the patterns for inclusion/exclusion in the aop.xmlfail to include the aspect it will not be finished off and you willget that NoSuchMethod problem.Let me know what your aop.xml says and the fully qualified name of the aspect.cheers,Andy
From: In response to an earlier post à
[aspectj-users] NoSuchMethod aspectOf exception using LTW. I have an aspect class which kept
constantly failing with the above NoSuchMethodError. To get around it, I just added the method it was unable to find.
See below @Aspect Class XYZ { @Around("execution(* foo.bar(..))") public Object applyAround(ProceedingJoinPoint jp) throws Throwable { // some code } // added this method and things were back
to normal public static XYZ aspectOf() { return new XYZ(); } // tried this but the method took for
ever to return and finally the application ran out of memory /* public static XYZ aspectOf() { return Aspects.aspectOf(XYZ.class); } */ } Not sure if there is a better long term fix
(like a setting in aop.xml). I don’t want to add this method for every
aspect I’m writing nor do I want to use “compile time weaving
(ajc)” for the aspects. Can anyone provide a better solution? Please Note: When Mr. Andrew Clement fixed the issue
below, he released a Dev version (please refer to the comments in the bug
report - 1.6.4 Dev) which was working perfectly. None of the later versions out
there seem to work without the hack. https://bugs.eclipse.org/bugs/show_bug.cgi?id=279298 |