Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] ArrayIndexOutOfBoundsException when compiling plain Java code (no aspects yet)

> So you're saying that AJDT is actually using the JDT compiler as provided by
> Eclipse (3.5.2 in my case), whereas the standalone distribution contains the
> Eclipse 3.3 compiler?

not quite, AspectJ is based on the Eclipse JDT compiler v3.3.  Whether
you are using AspectJ through AJDT or using it standalone, AspectJ is
using JDT 3.3 (yes, this means you are being 'downgraded' under
eclipse 3.4/3.5/3.6).  It doesn't move very often because the job of
making a JDT compiler build Aspect aware is quite a messy job, so it
really only gets done periodically when we know we need some bunch of
fixes from JDT.

If you had the time, you could try downloading Eclipse 3.3 and see if
it builds the pure java.  if it doesn't then the bug is in JDT and we
don't have the fix yet in AspectJ.  If it does build the code then it
relates to how we extend Eclipse JDT.

the stack mentions parameter annotations and index out of bounds.  If
I were investigating, I've seen issues in that area with inner types.
non-static inner types can have more parameters post compile than they
have when declared (as the instance of the outer class is passed in).
If the constructors of these types are using parameter annotations it
can produce strangeness because you don't have the right number of
parameter annotation entries as you have parameters.

Andy

On 15 April 2010 08:55, Martin Schafföner <the.shapht@xxxxxxxxxxxxxx> wrote:
> So you're saying that AJDT is actually using the JDT compiler as provided by
> Eclipse (3.5.2 in my case), whereas the standalone distribution contains the
> Eclipse 3.3 compiler?
>
> I fear I cannot raise a bug with the failing code as it's proprietary. I
> will try to isolate the problem, similar to the other one (14 exception
> types...). In the meantime, is there anything I can do to drill down on the
> problem myself?
>
> Martin
>
>> -----Original Message-----
>> From: aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-
>> bounces@xxxxxxxxxxx] On Behalf Of Andy Clement
>> Sent: Thursday, April 15, 2010 5:22 PM
>> To: aspectj-users@xxxxxxxxxxx
>> Subject: Re: [aspectj-users] ArrayIndexOutOfBoundsException when
>> compiling plain Java code (no aspects yet)
>>
>> Recent AspectJ releases are based on quite an old version of the
>> Eclipse JDT compiler, actually (3.3).  So we have none of the JDT
>> fixes from that up to Eclipse 3.6M6.  If you are able to raise a bug
>> and attach the failing code, I can take a look and perhaps grab a
>> particular fix from JDT.
>>
>> Andy
>>
>> On 15 April 2010 03:33, Martin Schafföner <the.shapht@xxxxxxxxxxxxxx>
>> wrote:
>> > Hi,
>> >
>> > while test driving AspectJ on a commercial code base, I found another
>> > problem. While compiling the code with AspectJ from within Eclipse
>> works
>> > well, I'm getting the following exception stack trace when compiling
>> the
>> > same code via Ant tasks:
>> >
>> >
>> >
>> > --- AspectJ Properties ---
>> > AspectJ Compiler 1.6.7.a built on Tuesday Jan 5, 2010 at 16:51:53 GMT
>> > ---- Dump Properties ---
>> > Dump file: ajcore.20100415.122536.949.txt
>> > Dump reason: java.lang.ArrayIndexOutOfBoundsException
>> > Dump on exception: true
>> > Dump at exit condition: abort
>> > ---- Exception Information ---
>> > java.lang.ArrayIndexOutOfBoundsException: 1
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.MethodInfoWithPa
>> ramet
>> >
>> erAnnotations.getParameterAnnotations(MethodInfoWithParameterAnnotation
>> s.jav
>> > a:24)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> creat
>> > eMethod(BinaryTypeBinding.java:433)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> creat
>> > eMethods(BinaryTypeBinding.java:620)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> cache
>> > PartsFrom(BinaryTypeBinding.java:327)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.
>> creat
>> > eBinaryTypeFrom(LookupEnvironment.java:620)
>> >        at
>> >
>> org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.createBin
>> aryTy
>> > peFrom(AjLookupEnvironment.java:1239)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.
>> creat
>> > eBinaryTypeFrom(LookupEnvironment.java:599)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.accept(Compiler.
>> java:
>> > 276)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.
>> askFo
>> > rType(LookupEnvironment.java:113)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenc
>> eBind
>> > ing.resolve(UnresolvedReferenceBinding.java:49)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> resol
>> > veType(BinaryTypeBinding.java:133)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> resol
>> > veTypesFor(BinaryTypeBinding.java:956)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> getEx
>> > actMethod(BinaryTypeBinding.java:760)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.
>> getEx
>> > actMethod(BinaryTypeBinding.java:779)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope.findExactMet
>> hod(S
>> > cope.java:787)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Sc
>> ope.j
>> > ava:2140)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveMe
>> thodB
>> > inding(MessageSend.java:613)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveTy
>> pe(Me
>> > ssageSend.java:465)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveTy
>> pe(Me
>> > ssageSend.java:422)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReturnStatement.resol
>> ve(Re
>> > turnStatement.java:216)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.Block.resolveUsing(Bl
>> ock.j
>> > ava:115)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.TryStatement.resolve(
>> TrySt
>> > atement.java:799)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclara
>> tion.
>> > resolveStatements(AbstractMethodDeclaration.java:433)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.res
>> olveS
>> > tatements(MethodDeclaration.java:196)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclara
>> tion.
>> > resolve(AbstractMethodDeclaration.java:404)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resol
>> ve(Ty
>> > peDeclaration.java:1109)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resol
>> ve(Ty
>> > peDeclaration.java:1188)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclar
>> ation
>> > .resolve(CompilationUnitDeclaration.java:366)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler
>> .java
>> > :636)
>> >        at
>> >
>> org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler
>> .java
>> > :392)
>> >        at
>> >
>> org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilatio
>> n(AjB
>> > uildManager.java:1022)
>> >        at
>> >
>> org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBu
>> ildMa
>> > nager.java:268)
>> >        at
>> >
>> org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuil
>> dMana
>> > ger.java:181)
>> >        at
>> org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
>> >        at
>> org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
>> >        at org.aspectj.tools.ajc.Main.run(Main.java:355)
>> >        at org.aspectj.tools.ajc.Main.runMain(Main.java:234)
>> >        at org.aspectj.tools.ajc.Main.main(Main.java:84)
>> > ---- System Properties ---
>> > java.runtime.name=Java(TM) SE Runtime Environment
>> > sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_17\jre\bin
>> > java.vm.version=14.3-b01
>> > java.vm.vendor=Sun Microsystems Inc.
>> > java.vendor.url=http://java.sun.com/
>> > path.separator=;
>> > java.vm.name=Java HotSpot(TM) 64-Bit Server VM
>> > file.encoding.pkg=sun.io
>> > sun.java.launcher=SUN_STANDARD
>> > user.country=US
>> > sun.os.patch.level=Service Pack 2
>> > java.vm.specification.name=Java Virtual Machine Specification
>> > user.dir=f:\workspaces\AJ\java2server
>> > java.runtime.version=1.6.0_17-b04
>> > java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
>> > java.endorsed.dirs=C:\Program Files\Java\jdk1.6.0_17\jre\lib\endorsed
>> > os.arch=amd64
>> > java.io.tmpdir=C:\DOCUME~1\msr\LOCALS~1\Temp\1\
>> > line.separator=
>> > .....
>> >
>> > I tried with AspectJ 1.6.8 first, which exhibited the same behavior,
>> then
>> > got 1.6.7a as that appears to be the version that Eclipse is using,
>> but it
>> > fails as above.
>> >
>> > Any ideas or hints, or is there anything I can do to narrow down on
>> the root
>> > cause of the problem?
>> >
>> > Regards,
>> > Martin
>> >
>> > _______________________________________________
>> > aspectj-users mailing list
>> > aspectj-users@xxxxxxxxxxx
>> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
>> >
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top