the code I posted was just an alternative way to interact with the load time weaver. I didn't mean anything with bootclasspath.
Andy 2009/11/21 Andrica Silviu <silviu.andr...@epfl.ch>: > Hi, > > when you say this is an alternative way, what do you exactly mean? An > alternative way to the code I posted or an alternative way to > -Xbootclasspath, which, BTW, does not work. Crashes the JVM. > > Cheers, > Silviu > On Nov 21, 2009, at 11:10 PM, Andy Clement wrote: > >> Glad to see you got it working. >> >> There is an alternative way too. It involves defining a correct >> weaving context that names the aspects and your options: >> >> static class SimpleWeavingContext extends DefaultWeavingContext { >> >> public SimpleWeavingContext(ClassLoader loader) { >> super(loader); >> } >> >> @Override >> public List getDefinitions(ClassLoader loader, WeavingAdaptor >> adaptor) { >> List definitions = new ArrayList(); >> Definition d = new Definition(); >> d.getAspectClassNames().add("MonitorAspect"); >> d.appendWeaverOptions("-Xjoinpoints:synchronization >> -debug"); >> definitions.add(d); >> return definitions; >> } >> >> } >> >> >> and then using the ClassLoaderWeavingAdaptor: >> >> byte[] bytes = readEntireInputStream(new >> FileInputStream("bin/Test.class")); >> URL[] aspects = getWeaversURL(); >> URL[] classpath = getClasspathURL(); >> URL[] realClasspath = new URL[aspects.length + >> classpath.length]; >> System.arraycopy(aspects, 0, realClasspath, 0, aspects.length); >> System.arraycopy(classpath, 0, realClasspath, aspects.length, >> classpath.length); >> URLClassLoader myClassLoader = new >> URLClassLoader(realClasspath, >> ClassLoader.getSystemClassLoader()); >> >> ClassLoaderWeavingAdaptor clwa = new >> ClassLoaderWeavingAdaptor(); >> >> clwa.initialize(myClassLoader, new >> SimpleWeavingContext(myClassLoader)); >> >> byte[] newBytes = clwa.weaveClass("test.Test", bytes, true); >> >> However, it will only work with AspectJ 1.6.7 dev builds after today >> because I needed to open up initialize() so it was public rather than >> protected. And I've only just committed that change. >> >> Andy >> >> >> 2009/11/21 Andrica Silviu <silviu.andr...@epfl.ch>: >>> Hi, >>> Indeed I forgot :) And I did create a wrapper class around the >>> WeavingAdaptor that sets the right permissions. The code is the following: >>> Please find attached the code. >>> It works brilliant as long as I don't instrument already loaded classes, >>> through java.lang.Instrumentation.instrumentation.retransformClasses(...); >>> or java.* classes, I don't exactly know. In this case, Java complains about >>> not finding the aspect. I am currently exploring the use of >>> -Xbootclassptah/p:<path_to_aspect>. >>> >>> Thanks for the replies. >>> Best regards, >>> Silviu >>> _______________________________________________ >>> 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 > > _______________________________________________ > 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