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

Reply via email to