Hi Jouni,

I just raised this as https://bugs.eclipse.org/bugs/show_bug.cgi?id=259279

If you want to workaround it at the moment, you can deactivate
pipelineCompilation until it is fixed.

-Xset:pipelineCompilation=false

in the AspectJ compiler options for the project.

Andy.

2008/12/18 Jouni Lantinen <[email protected]>

> Hello.
>
> I have an issue that comes from a combination of things and leads to
> java.lang.ClassFormatError at runtime. Here is the most minimalistic
> package to reproduce this problem:
>
> public aspect Aspect pertypewithin(*){}
>
> public interface GenericService<T extends SomeInterface> {
>        public void doStuff(T t);
> }
>
> public class GenericServiceImpl<T extends SomeInterface> implements
> GenericService<T> {
>        public void doStuff(T t) {}
> }
>
> public interface SomeInterface {}
>
> public class SomeServiceImpl extends GenericServiceImpl<SomeInterface> {
>        @Override
>        public void doStuff(SomeInterface someInterface) {
>        }
> }
>
> public class Main {
>        public static void main(String[] args) {
>                new SomeServiceImpl();
>        }
> }
>
> And here is what I get right after I have done clean and ran my little
> test.
>
> Exception in thread "main" java.lang.ClassFormatError: Repetitive method
> name/signature in class file SomeServiceImpl
>        at java.lang.ClassLoader.defineClass1(Native Method)
>        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
>        at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>        at java.net.URLClassLoader.access$100(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:306)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>        at Main.main(Main.java:3)
>
> Any of the following will remove this issue:
>
> 1) Removing pertypewithin(*) from the aspect
> 2) Renaming SomeServiceImpl to ASomeServiceImpl, or anything so is
> before GenericServiceImpl alphabetically.
> 3) Compiling SomeServiceImpl again after cleaning (whitespace
> modification and save).
> 4) Commenting the doStuff method out from SomeServiceImpl class.
> 5) Changing method signature in SomeServiceImpl to take T (T extends
> SomeInterface) as the argument.
>
> The difference between working and not working .class files I get is
> that there is an additional method descriptor in the one that does not
> work:
>
>  // Method descriptor #15 (LSomeInterface;)V
>  // Stack: 2, Locals: 2
>  public bridge void doStuff(SomeInterface arg0);
>    0  aload_0
>    1  aload_1
>    2  invokevirtual SomeServiceImpl.doStuff(SomeInterface) : void [36]
>    5  return
>      Line numbers:
>        [pc: 0, line: 1]
>
> And here are my versions:
> Eclipse Platform
>
> Version: 3.4.1
> Build id: M20080911-1700
>
> Eclipse AspectJ Development Tools
>
> Version: 1.6.1.20081104192500
> AspectJ version: 1.6.3.20081028135200
>
> java version "1.5.0_16"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
> Java HotSpot(TM) Server VM (build 1.5.0_16-b02, mixed mode)
>
> Has anyone experienced and maybe resolved this issue? I tried to browse
> the bug reports but couldn't find anything that seemed like a match.
>
> Thanks in advance,
> Jouni Lantinen
>
> _______________________________________________
> 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

Reply via email to