Hi, Yes that is a bug I think - we shouldn't be creating that interface again (and causing the duplicate class problem).
cheers, Andy 2009/11/13 Jean-Louis.Pasturel <[email protected]>: > I try to write a simple abstract LTW aspect with the perthis clause using > the concrete-aspect mecanism : > > My aspect : > > /package jlp.aspectsJMX.abstractAspects; > public abstract aspect AbstractCPUDurationSimpleMethodPerthis > perthis(methods()) { > public abstract pointcut methods(); > > Object around(): methods() { > System.out.println("Execution around"); > return proceed(); > > } > > } > / > my aop.xml file > /<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> > <aspectj> > <aspects> > <concrete-aspect > extends="jlp.aspectsJMX.abstractAspects.AbstractCPUDurationSimpleMethodPerthis" > > name="jlp.aspectsJMX.abstractAspects.AbstractCPUDurationSimpleMethodPerthisImpl"> > <pointcut expression="execution(public * > SessionExample.doPost(..))" name="methods"/> > </concrete-aspect> > > > </aspects> > <!-- Foot Mode Verbose --> > > <weaver options="-XnoInline -Xlint:ignore -verbose -showWeaveInfo > -Xset:weaveJavaPackages=true,weaveJavaxPackages=true,typeDemotion=true"> > <exclude within="iep.perf..*"/> > <exclude within="jlp.aspectsJMX..*"/> > <exclude within="org.hibernate.type.ComponentType"/> > <exclude within="*..*EnhancerByCGLIB*..*"/> > <exclude within="*..*.*$$EnhancerByCGLIB$$*"/> > <exclude within="*..*.*$$EnhancerByCGLIB$$*"/> > <exclude within="*..*.*$$FastClassByCGLIB$$*"/> > </weaver> > </aspectj> > / > A simple application ( servlets-examples of Tomcat 5.5.28) > SessionExample.java ( a servlet, i try to weave the doPost method) > > I get the exception below : > > [appclassloa...@df6ccd] info AspectJ Weaver* Version DEVELOPMENT built on > Friday > Nov 13, 2009 at 00:20:22 GMT* > [appclassloa...@df6ccd] info register classloader > sun.misc.Launcher$AppClassLoad > e...@df6ccd > [appclassloa...@df6ccd] info using configuration > file:/C:/opt/workspaceLP/monProjet/myaspectjweaver.jar!/META-INF/aop.xml > [appclassloa...@df6ccd] info define aspect > jlp.aspectsJMX.abstractAspects.AbstractCPUDurationSimpleMethodPerthisImpl > [appclassloa...@df6ccd] warning define generated class failed -- > (LinkageError) > loader (instance of sun/misc/Launcher$AppClassLoader): *attempted > duplicate class definition for name: > "jlp/aspectsJMX/abstractAspects/AbstractCPUDurationSimpleMethodPerthisImpl$ajcMightHaveAspect"* > loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate > cla > ss definition for name: > "jlp/aspectsJMX/abstractAspects/AbstractCPUDurationSimpl > eMethodPerthisImpl$ajcMightHaveAspect" > java.lang.LinkageError: loader (instance of > sun/misc/Launcher$AppClassLoader): > attempted duplicate class definition for name: > "jlp/aspectsJMX/abstractAspects/AbstractCPUDurationSimpleMethodPerthisImpl$ajcMightHaveAspect" > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:621) > at java.lang.ClassLoader.defineClass(ClassLoader.java:466) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. > java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces > sorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.defineClass(Cla > ssLoaderWeavingAdaptor.java:819) > at > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.access$100(Clas > sLoaderWeavingAdaptor.java:57) > at > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor$SimpleGenerated > ClassHandler.acceptClass(ClassLoaderWeavingAdaptor.java:128) > at > org.aspectj.weaver.tools.WeavingAdaptor$WeavingClassFileProvider$1.ac > ceptResult(WeavingAdaptor.java:814) > at > org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:154 > 1) > at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1324) > at > org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor. > java:449) > at > org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.jav > a:307) > at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:96) > at > org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(C > lassPreProcessorAgentAdapter.java:52) > at > sun.instrument.TransformerManager.transform(TransformerManager.java:1 > 69) > at > sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java > :365) > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:621) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12 > 4) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) > at java.net.URLClassLoader.access$000(URLClassLoader.java:56) > at java.net.URLClassLoader$1.run(URLClassLoader.java:195) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > at java.lang.ClassLoader.loadClass(ClassLoader.java:252) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) > > is it a bug ? a default aspect ( issingleton ) runs correctly. > > > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
