It is the perthis instantiation model that causes the marker interface to get generated 'BehaviourInvokeTracing$ajcMightHaveAspect', and as a generated interface it should be getting defined directly - is there anything that could be preventing AspectJ dynamically defining classes on the fly? (Funky class loader in the mix or some such?). Are you able to try compile time weaving? (weave into the akka jar you are modifying). Something like compile the scala and then:
ajc -inpath akkajar.jar -aspectpath mycompiledscalacode.jar -outjar wovenakkajar.jar and then use the wovenakkajar.jar? Andy On 20 March 2014 17:15, Diego Parra <diegolpa...@gmail.com> wrote: > Hi, > > I'm using AspectJ LTW and having the trouble with the following Aspect/P > ointcut: > > @Aspect("perthis(actorCellCreation(*, *, *, *, *))") > class BehaviourInvokeTracing { > var metricIdentity: ActorMetrics = _ > var actorMetrics: Option[ActorMetricRecorder] = None > > @Pointcut("execution(akka.actor.ActorCell.new(..)) && args(system, ref, > props, dispatcher, parent)") > def actorCellCreation(system: ActorSystem, ref: ActorRef, props: Props, > dispatcher: MessageDispatcher, parent: ActorRef): Unit = {} > > @After("actorCellCreation(system, ref, props, dispatcher, parent)") > def afterCreation(system: ActorSystem, ref: ActorRef, props: Props, > dispatcher: MessageDispatcher, parent: ActorRef): Unit = { > val metricsExtension = Kamon(Metrics)(system) > > metricIdentity = ActorMetrics(ref.path.elements.mkString("/")) > actorMetrics = metricsExtension.register(metricIdentity, > ActorMetrics.Factory) > } > > For some reason if I change the Aspect Instantiation to singleton all > works fine, otherwise throws an exception that i've included at the bottom. > > Thanks, > > -Diego > > > undefined][] [specs2.DefaultExecutionStrategy1] > org.aspectj.weaver.bcel.BcelWorld - Unable to find class > 'akka.instrumentation.BehaviourInvokeTracing$ajcMightHaveAspect' in > repository > java.lang.ClassNotFoundException: > akka.instrumentation.BehaviourInvokeTracing$ajcMightHaveAspect not found - > unable to determine URL > at > org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:292) > ~[aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:418) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:392) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:107) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.World.resolveToReferenceType(World.java:477) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.World.resolve(World.java:318) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.World.resolve(World.java:228) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.UnresolvedType.resolve(UnresolvedType.java:616) > [aspectjweaver-1.7.4.jar:1.7.4] > at > org.aspectj.weaver.bcel.BcelTypeMunger.mungePerObjectInterface(BcelTypeMunger.java:796) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelTypeMunger.munge(BcelTypeMunger.java:116) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:516) > [aspectjweaver-1.7.4.jar:1.7.4] > at > org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:101) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1691) > [aspectjweaver-1.7.4.jar:1.7.4] > at > org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1635) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1400) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1186) > [aspectjweaver-1.7.4.jar:1.7.4] > at > org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:527) > [aspectjweaver-1.7.4.jar:1.7.4] > at > org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:363) > [aspectjweaver-1.7.4.jar:1.7.4] > at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:121) > [aspectjweaver-1.7.4.jar:1.7.4] > at > org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54) > [aspectjweaver-1.7.4.jar:1.7.4] > at > sun.instrument.TransformerManager.transform(TransformerManager.java:188) > [na:1.7.0_45] > at > sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424) > [na:1.7.0_45] > at java.lang.ClassLoader.defineClass1(Native Method) [na:1.7.0_45] > at java.lang.ClassLoader.defineClass(ClassLoader.java:800) [na:1.7.0_45] > at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > [na:1.7.0_45] > at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) > [na:1.7.0_45] > at java.net.URLClassLoader.access$100(URLClassLoader.java:71) [na:1.7.0_45] > at java.net.URLClassLoader$1.run(URLClassLoader.java:361) [na:1.7.0_45] > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [na:1.7.0_45] > at java.security.AccessController.doPrivileged(Native Method) > [na:1.7.0_45] > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) [na:1.7.0_45] > at java.lang.ClassLoader.loadClass(ClassLoader.java:425) [na:1.7.0_45] > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) > [na:1.7.0_45] > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) [na:1.7.0_45] > at java.lang.Class.getDeclaredFields0(Native Method) [na:1.7.0_45] > at java.lang.Class.privateGetDeclaredFields(Class.java:2397) > [na:1.7.0_45] > at java.lang.Class.getDeclaredField(Class.java:1946) [na:1.7.0_45] > > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > >
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users