Aspect perthis clause error

View: New views
3 Messages — Rating Filter:   Alert me  

Aspect perthis clause error

by Jean-Louis.Pasturel-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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@...
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Re: Aspect perthis clause error

by Andy Clement :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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@...>:

> 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@...
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@...
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Re: Aspect perthis clause error

by Jean-Louis.Pasturel-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks Andy,
i will raise it in bugzilla

Andy Clement a écrit :

>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@...>:
>  
>
>>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@...
>>https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>    
>>
>_______________________________________________
>aspectj-users mailing list
>aspectj-users@...
>https://dev.eclipse.org/mailman/listinfo/aspectj-users
>---------------------------------------------------------------------------------------
>Orange vous informe que cet  e-mail a ete controle par l'anti-virus mail.
>Aucun virus connu a ce jour par nos services n'a ete detecte.
>
>
>
>  
>



_______________________________________________
aspectj-users mailing list
aspectj-users@...
https://dev.eclipse.org/mailman/listinfo/aspectj-users