Community
Participate
Working Groups
ArrayIndexOutBoundsException when using maven and aspectj-maven-plugin to compile a project. This error occurs in a large project and I am unable to share the source code. I began facing this issue after I upgraded from spring-data-mongodb-1.10.x to spring-data-mongodb-2.0.0. This error occurs when I compile the project 1) in eclipse 2) using maven from command line The stack trace below is produced by maven from command line. Eclipse does not provide full stack trace when compile fails but I assume it is related to the same problem. Feel free to ask if you need more details. ---- AspectJ Properties --- AspectJ Compiler 1.8.11 built on Tuesday Sep 26, 2017 at 15:08:44 GMT ---- Dump Properties --- Dump file: ajcore.20171013.085754.775.txt Dump reason: java.lang.ArrayIndexOutOfBoundsException Dump on exception: true Dump at exit condition: abort ---- Exception Information --- java.lang.ArrayIndexOutOfBoundsException: 2 at org.aspectj.weaver.ResolvedType.getMemberParameterizationMap(ResolvedType.java:970) at org.aspectj.weaver.ReferenceType.getDeclaredInterfaces(ReferenceType.java:748) at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:629) at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:635) at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:647) at org.aspectj.weaver.ResolvedType.isTopmostImplementor(ResolvedType.java:2327) at org.aspectj.weaver.ResolvedTypeMunger.matches(ResolvedTypeMunger.java:133) at org.aspectj.weaver.ConcreteTypeMunger.matches(ConcreteTypeMunger.java:81) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.weaveInterTypeDeclarations(AjLookupEnvironment.java:783) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.weaveInterTypeDeclarations(AjLookupEnvironment.java:646) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.doPendingWeaves(AjLookupEnvironment.java:421) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:201) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:859) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:385) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:435) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:417) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1036) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:272) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:185) at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:114) at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) at org.aspectj.tools.ajc.Main.run(Main.java:371) at org.aspectj.tools.ajc.Main.runMain(Main.java:248) at org.codehaus.mojo.aspectj.AbstractAjcCompiler.execute(AbstractAjcCompiler.java:544) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
From the line of code: parameterizationMap.put(tvs[i].getName(), typeParameters[i]); I think there are less typeParameters than we expect. I've added some diagnostics for this problem to a 1.8.12.BUILD-SNAPSHOT - can you try with that? It is in the maven repo: <repository> <id>spring-maven-snapshot</id> <name>Spring Maven Snapshot Repository</name> <url>http://maven.springframework.org/snapshot</url> </repository> It should tell us what types were involved in the problem in an IllegalStateException then we can dig a little deeper. (Although I haven't been able to exactly test it because I can't recreate). thanks!
Thanks for the response. I tried to use 1.8.12.BUILD-SNAPSHOT and found the problem: [ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.10:compile (default) on project oneportal: AJC compiler errors: [ERROR] abort ABORT -- (IllegalStateException) Problem occurred whilst calling isAssignableFrom for Lorg/springframework/beans/factory/aspectj/AbstractInterfaceDrivenDependencyInjectionAspect$ConfigurableDeserializationSupport; and L---REDACTED_PACKAGE---/BaseEntity; [ERROR] Problem occurred whilst calling isAssignableFrom for Lorg/springframework/beans/factory/aspectj/AbstractInterfaceDrivenDependencyInjectionAspect$ConfigurableDeserializationSupport; and L---REDACTED_PACKAGE---/BaseEntity; [ERROR] java.lang.IllegalStateException: Problem occurred whilst calling isAssignableFrom for Lorg/springframework/beans/factory/aspectj/AbstractInterfaceDrivenDependencyInjectionAspect$ConfigurableDeserializationSupport; and L---REDACTED_PACKAGE---/BaseEntity; [ERROR] at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:651) [ERROR] at org.aspectj.weaver.ResolvedType.isTopmostImplementor(ResolvedType.java:2346) [ERROR] at org.aspectj.weaver.ResolvedTypeMunger.matches(ResolvedTypeMunger.java:133) [ERROR] at org.aspectj.weaver.ConcreteTypeMunger.matches(ConcreteTypeMunger.java:81) [ERROR] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.weaveInterTypeDeclarations(AjLookupEnvironment.java:783) [ERROR] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.weaveInterTypeDeclarations(AjLookupEnvironment.java:646) [ERROR] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.doPendingWeaves(AjLookupEnvironment.java:421) [ERROR] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:201) [ERROR] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:859) [ERROR] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:385) [ERROR] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:435) [ERROR] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:417) [ERROR] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1036) [ERROR] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:272) [ERROR] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:185) [ERROR] at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:114) [ERROR] at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) [ERROR] at org.aspectj.tools.ajc.Main.run(Main.java:371) [ERROR] at org.aspectj.tools.ajc.Main.runMain(Main.java:248) [ERROR] at org.codehaus.mojo.aspectj.AbstractAjcCompiler.execute(AbstractAjcCompiler.java:544) [ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) [ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) [ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) [ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) [ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) [ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) [ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.lang.reflect.Method.invoke(Method.java:498) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) [ERROR] Caused by: java.lang.IllegalStateException: 525972: Mismatch when building parameterization map. For type Porg/springframework/data/domain/Auditable<Ljava/lang/String;Ljava/lang/String;>; expecting 3: U ID T type parameters but found 2:Ljava/lang/String; Ljava/lang/String; [ERROR] at org.aspectj.weaver.ResolvedType.getMemberParameterizationMap(ResolvedType.java:970) [ERROR] at org.aspectj.weaver.ReferenceType.getDeclaredInterfaces(ReferenceType.java:752) [ERROR] at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:629) [ERROR] at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:635) [ERROR] at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:648) [ERROR] ... 41 more There is one dependency library in my project that also must be updated to support spring-data-mongodb-2.0.0, so this is not a bug in aspectj but a bug in our code. The modification you made is still extremely useful because it allowed me to quickly locate the problem. Thank you!
Thanks for digging into that and trying my debug version. Even if there was an issue for you it shouldn't surface as an exception in AspectJ so I will think about including some form of better diagnostics.
I added a guard to prevent the AIOOBE and a message that includes the info I was including in those exceptions. I can't add a testcase - I'm having trouble recreating it precisely. Hopefully these changes will help next time the situation arises though.