Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Aspect perthis clause error

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 <jean-louis.pasturel@xxxxxxxxx>:
> 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 :
>
> [AppClassLoader@df6ccd] info AspectJ Weaver* Version DEVELOPMENT built on
> Friday
> Nov 13, 2009 at 00:20:22 GMT*
> [AppClassLoader@df6ccd] info register classloader
> sun.misc.Launcher$AppClassLoad
> er@df6ccd
> [AppClassLoader@df6ccd] info using configuration
> file:/C:/opt/workspaceLP/monProjet/myaspectjweaver.jar!/META-INF/aop.xml
> [AppClassLoader@df6ccd] info define aspect
> jlp.aspectsJMX.abstractAspects.AbstractCPUDurationSimpleMethodPerthisImpl
> [AppClassLoader@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
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top