Skip to main content

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

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.





Back to the top