Community
Participate
Working Groups
Hi, I'm getting the following error msg and an ajcore dump file when trying to run the ant iajc task using aspectj 1.5.0M2. This same script ran fine with version 1.2.1. I tried running under several JDK's with the same result. Ant version: 1.6.2 JDK's tried: SUN 1.4.2_08 SUN 1.5.0_02 IBM 1.4.2 build 20041028 Ant script ********** <taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties"> </taskdef> <target name="compile" depends="xdoclet"> <mkdir dir="${basedir}/target/classes"/> <iajc destdir="${basedir}/target/classes" classpathref="classpath" deprecation="true" debug="true"> <src path="${basedir}/target/src"/> <src path="${basedir}/src/java"/> <src path="${basedir}/src/aspect"/> <src path="${basedir}/${xdoclet.gen.dir}"/> </iajc> </target> Ant output ********** compile: [iajc] C:\data\test\andromda\ags\hibernate\ejb\src\aspect\com\amway\validation\IboValidationAspect.java [error] Internal compiler error [iajc] org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException [iajc] at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:121) [iajc] at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(BcelAttributes.java:42) [iajc] at org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes(BcelObjectType.java:173) [iajc] at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:92) [iajc] at org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(BcelWorld.java:213) [iajc] at org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(BcelWorld.java:208) [iajc] at org.aspectj.weaver.World.resolveObjectType(World.java:150) [iajc] at org.aspectj.weaver.World.resolve(World.java:129) [iajc] at org.aspectj.weaver.World.resolve(World.java:108) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory.fromEclipse(EclipseFactory.java:113) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getSuperclass(EclipseSourceType.java:80) [iajc] at org.aspectj.weaver.ResolvedTypeX$Name.getSuperclass(ResolvedTypeX.java:765) [iajc] at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.checkSpec(AspectDeclaration.java:130) [iajc] at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.buildInterTypeAndPerClause(AspectDeclaration.java:960) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.buildInterTypeAndPerClause(AjLookupEnvironment.java:303) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:119) [iajc] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:331) [iajc] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:348) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:683) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:168) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:109) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) [iajc] at org.aspectj.tools.ajc.Main.run(Main.java:291) [iajc] at org.aspectj.tools.ajc.Main.runMain(Main.java:227) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.executeInSameVM(AjcTask.java:1195) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.execute(AjcTask.java:985) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.Project.executeTargets(Project.java:1062) [iajc] at org.apache.tools.ant.Main.runBuild(Main.java:673) [iajc] at org.apache.tools.ant.Main.startAnt(Main.java:188) [iajc] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196) [iajc] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55) [iajc] (no source information available) [iajc] ABORT [iajc] [iajc] Exception thrown from AspectJ 1.5.0M2 [iajc] This might be logged as a bug already -- find current bugs at [iajc] http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler [iajc] Bugs for exceptions thrown have titles File:line from the top stack, [iajc] e.g., "SomeFile.java:243" [iajc] If you don't find the exception below in a bug, please add a new bug [iajc] at http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ [iajc] To make the bug a priority, please include a test program [iajc] that can reproduce this exception. [iajc] malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException [iajc] malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException [iajc] org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException [iajc] at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:121) [iajc] at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(BcelAttributes.java:42) [iajc] at org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes(BcelObjectType.java:173) [iajc] at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:92) [iajc] at org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(BcelWorld.java:213) [iajc] at org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(BcelWorld.java:208) [iajc] at org.aspectj.weaver.World.resolveObjectType(World.java:150) [iajc] at org.aspectj.weaver.World.resolve(World.java:129) [iajc] at org.aspectj.weaver.World.resolve(World.java:108) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory.fromEclipse(EclipseFactory.java:113) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getSuperclass(EclipseSourceType.java:80) [iajc] at org.aspectj.weaver.ResolvedTypeX$Name.getSuperclass(ResolvedTypeX.java:765) [iajc] at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.checkSpec(AspectDeclaration.java:130) [iajc] at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.buildInterTypeAndPerClause(AspectDeclaration.java:960) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.buildInterTypeAndPerClause(AjLookupEnvironment.java:303) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:119) [iajc] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:331) [iajc] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:348) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:683) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:168) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:109) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) [iajc] at org.aspectj.tools.ajc.Main.run(Main.java:291) [iajc] at org.aspectj.tools.ajc.Main.runMain(Main.java:227) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.executeInSameVM(AjcTask.java:1195) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.execute(AjcTask.java:985) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.Project.executeTargets(Project.java:1062) [iajc] at org.apache.tools.ant.Main.runBuild(Main.java:673) [iajc] at org.apache.tools.ant.Main.startAnt(Main.java:188) [iajc] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196) [iajc] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55) [iajc] MessageHolder: (1 error) (1 abort) [iajc] [error 0]: error at (no source information available) [iajc] C:\data\test\andromda\ags\hibernate\ejb\src\aspect\com\amway\validation\IboValidationAspect.java:0::0 Internal compiler error [iajc] org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException [iajc] at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:121) [iajc] at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(BcelAttributes.java:42) [iajc] at org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes(BcelObjectType.java:173) [iajc] at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:92) [iajc] at org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(BcelWorld.java:213) [iajc] at org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(BcelWorld.java:208) [iajc] at org.aspectj.weaver.World.resolveObjectType(World.java:150) [iajc] at org.aspectj.weaver.World.resolve(World.java:129) [iajc] at org.aspectj.weaver.World.resolve(World.java:108) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory.fromEclipse(EclipseFactory.java:113) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getSuperclass(EclipseSourceType.java:80) [iajc] at org.aspectj.weaver.ResolvedTypeX$Name.getSuperclass(ResolvedTypeX.java:765) [iajc] at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.checkSpec(AspectDeclaration.java:130) [iajc] at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.buildInterTypeAndPerClause(AspectDeclaration.java:960) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.buildInterTypeAndPerClause(AjLookupEnvironment.java:303) [iajc] at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:119) [iajc] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:331) [iajc] at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:348) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:683) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:168) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:109) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) [iajc] at org.aspectj.tools.ajc.Main.run(Main.java:291) [iajc] at org.aspectj.tools.ajc.Main.runMain(Main.java:227) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.executeInSameVM(AjcTask.java:1195) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.execute(AjcTask.java:985) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) [iajc] at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [iajc] at org.apache.tools.ant.Task.perform(Task.java:364) [iajc] at org.apache.tools.ant.Target.execute(Target.java:341) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:369) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [iajc] at org.apache.tools.ant.Project.executeTargets(Project.java:1062) [iajc] at org.apache.tools.ant.Main.runBuild(Main.java:673) [iajc] at org.apache.tools.ant.Main.startAnt(Main.java:188) [iajc] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196) [iajc] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)
Created attachment 20179 [details] core dump file
This is due to one of the inputs for the task having built with an old version (1.2.0?) of AspectJ - can you rebuild the inputs to the compile task? Possibly this library: C:\data\test\andromda\ags\lib\aspectjlib.jar that I see is referenced on the classpath? We added support for versioning of attributes (which gets round this problem) only recently but couldn't do anything for the 1.2.0 version of AJ.
All the aspectj*.jar are from the 1.5.0M2 download (dated April 7), I don't think that 1.2.1 had aspectjlib.jar anyway. I basically deleted all the 1.2.1 jars and replaced them with the 1.5.0 ones both in the application classpath (C:\data\test\andromda\ags\lib\) and in the lib folder of the ant installation. Should I be doing a custom build from cvs or using a later developmental build rather than relying on the M2 download?
aspectjlib is the aspects library we are working on - you can completely ignore that. You don't need to work with a dev build of AspectJ - 1.5.0M2 is fine. I still think the problem will be that something on the classpath includes AJ code and yet it hasn't been rebuilt with a recent compiler. It won't be enough just to put the new aspectj libraries on the classpath for the iajc task you are running - the error indicates that one of the binaries on the classpath itself was built with an old version of AspectJ and needs rebuilding. C:\data\test\andromda\ags\hibernate\ejb\src\aspect\com\amway\validation\IboValidationAspect.java Does this first file listed in the error message refer to a pointcut in some other file on the classpath?
You might try running in forked mode with forkclasspath, in case you're picking up the wrong compiler or some supertype. It doesn't make sense that you'd be resolving old binaries since you didn't specify any. You might also try using sourceroots rather than src. Even better, use the command-line compiler to verify that it's not a compiler-deployment issue. <iajc destdir="${basedir}/target/classes" fork="true" forkclasspath="todo" classpathref="classpath" deprecation="true" debug="true"> <sourceroots> <pathelement location="${basedir}/target/src"/> <pathelement location="${basedir}/src/java"/> <pathelement location="${basedir}/src/aspect"/> <pathelement location="${basedir}/${xdoclet.gen.dir}"/> </sourceroots> </iajc>
Created attachment 20276 [details] ajcore dump file from cmdline compiler
It seems it is a compiler deployment problem, I ran the commandline compiler and got the same problem. It also did not seem to matter which aspect file was being compiled. Cmdline ******* ajc -verbose -sourceroots target/src;src/java;src/aspect -classpath ../../lib/aspectjrt.jar;../../lib/hibernate-2.1.8.jar;../../lib/commons-logging-1.0.4.jar;../../lib/log4j-1.2.8.jar;../../lib/dwlogging-0.1.jar;../../common/target/ags-ibo-common-0.3.jar I may have to leave this for now, until I'm a bit more familiar with 1.5 migration and setup. Thank you for all your help so far, appreciate it.
Is C:\data\test\andromda\ags\hibernate\ejb\src\aspect\com\amway\validation\IboValidationAspect.java a concrete sub-aspect of some super aspect? Is there any way you can send the source to me (either attaching it or emailing it directly?). if not, can you confirm the kind of pointcuts used in IboValidationAspect - are they all defined within that file or does it refer to pointcuts in other files (either an entirely separate type or the super type?).
Created attachment 20426 [details] IboValidationAspect.java
Created attachment 20427 [details] TraceAspect.java
I seem to get the same problem with all my aspect files. I've attached IboValidationAspect.java which doesn't have aspect inheritance and a simple TraceAspect.java which does - both of these and others all produce the error.
Reassigning per comment 7 (also in command-line compiler), since Andy seems to be working on it.
Thanks for the attachments, where is BaseTraceAspect defined? Is it compiled from source in the same compile step as everything else? Or is it found in a .jar on the classpath?
BaseTraceAspect is in one of the jar files, it has an abstract pointcut.
Was the jar file containing BaseTraceAspect built with 1.5.0M2 of AspectJ or an earlier version?
The jar file containing BaseTraceAspect were from a previous project and were built with 1.2.1. I managed to compile when I removed them from the build process so they were the cause of the problem. I'll have to make sure that I recompile all utility jars containing aspects in the future. Thank you for your help
I wouldn't expect AspectJ 1.5.0 to understand a jar previously built with AspectJ1.2.0 - but I *would* expect it to understand a jar previously built with AspectJ1.2.1, so I'm a little concerned by your findings. Is there any way you could attach the BaseTraceAspect to this bug report so I could take a look at the kind of pointcuts it includes and what might have broken 1.5.0's ability to read it in? thanks.
Hi Andy, I'm currently overseas in japan so don't have access to some code. When I return to Australia, I will double check the code and aspectj version for you.
Created attachment 21246 [details] BaseTraceAspect.java BaseTraceAspect.java - was built with AspectJ 1.2.1
for M4
Ok, now the horror of the generics is done and we've released AspectJ 1.5.0M3, I'm taking a look at this bug. I recently overhauled the version-to-version support in AJ so that in more situations we can cope with a recent version of AspectJ (1.5.0) attempting to process old AspectJ code (either 1.2.0/1.2.1) - and this bug seems related to problems in this area. I've looked at the source code David attached and can't see anything 'unusual' that my new version code should have problems with. So, given that I believe David is now in a working state and the version management code has been improved since this was raised, I'm proposing to close this bug.
Aha! I fixed two bugs today related to supporting 1.2.1 built jars - and re-examining the aspect here, I can see why it failed and so I *have* fixed this problem too. The problem is that the abstract aspect has this pointcut: protected abstract pointcut loggedOperations(); This gets serialized into an attribute in the aspect class file. Because it has 'no body', in 1.2.1 we gave it an 'id' of 20 in the attribute. During the course of 1.5 development we have added a bunch of IDs for new pointcut kinds (@args,@annotation, etc, etc). We mistakenly inserted those before before the 'no body' id 20 and just 'moved' the 'no body' id to 40. I can see why this happened because the name given to the value 20 was misleading - indicating it was meant to be the uppermost possible value - rather than a specific value intended to mean 'the empty pointcut declaration'. Anyway - in 1.5 world we were seeing '20' when reading in the 1.2.1 pointcut attribute and thinking it meant '@args' so we then tried to deserialize an @args pointcut. Of course there isn't anything left to deserialize as '20' was meant to represent that there is nothing further to read - so we blow up EOF. My fix is to make 20 represent the empty definition as before and I've shuffled the other values as appropriate - this does mean anyone who has compiled code using AspectJ5 must do so again after this change (to make sure they get the right values) - but this is the *right* fix as it means we can correctly process 1.2.1 built class files again :) And we don't guarantee the serialized form is fixed before delivering the final version of AspectJ 5. I checked the fix in a little while ago - will close this bug when a dev build is available.
Fix available in latest dev build.
(In reply to comment #23) > Fix available in latest dev build. I'm also facing the similar kind of error in Sun OS5.8. I'm using aspectj1.2.1. Is the fix availble for 1.2.1. regards, Hari
As a general rule, we don't backport any fixes to 1.2.1. From memory there were two fixes I did to version support recently: - fixed it so we don't default into thinking a file is AspectJ5 (or the 'current' level of the compiler being used) if it has no version in, we now default to thinking its AspectJ pre 1.2.1 - fixed the incorrect serialized form for pointcuts. The first fix will only make a difference if you are asking AspectJ to process a very old jar (built with pre 1.2.1). In this case it is feasible that the fix for AJ5 could be backported to 1.2.1 to get it to work. The second fix will only make a difference if you give an old jar to AspectJ5. On sun, is your problem that Aj1.2.1 can't process an aj1.2.1 built jar? or is it that it can't process a 1.2.0 built jar? Is it not possible for you to use AspectJ5 on SUN? You don't need a Java5 in order to run the AJ5 compiler, you only need Java5 to exploit Java5 features. It could be a new bug I'm not aware of...
HI Andy, Thanx for the response.We r using AspectJ1.2.1 as a part of our application We are yet to test our application with AspectJ1.5 . I'll just explain the error tht we've got while compiling an aspect, Internal compiler error org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:121) at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes (BcelAttributes.java:59) at org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes (BcelObjectType.java:249) at org.aspectj.weaver.bcel.BcelObjectType.<init> (BcelObjectType.java:119) at org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType (BcelWorld.java:244) at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate (BcelWorld.java:239) at org.aspectj.weaver.World.resolveToReferenceType(World.java:277) at org.aspectj.weaver.World.resolve(World.java:205) at org.aspectj.weaver.World.resolve(World.java:127) at org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory.fromEclipse (EclipseFactory.java:125) at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getSuperclass (EclipseSourceType.java:115) at org.aspectj.weaver.ReferenceType.getSuperclass (ReferenceType.java:443) at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.checkSpec (AspectDeclaration.java:170) at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.buildInterTypeAndPerCl ause(AspectDeclaration.java:1045) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.buildInterTypeAnd PerClause(AjLookupEnvironment.java:312) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindi ngs(AjLookupEnvironment.java:128) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile (Compiler.java:301) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile (Compiler.java:315) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation (AjBuildManager.java:728) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild (AjBuildManager.java:206) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild (AjBuildManager.java:140) 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:324) at org.aspectj.tools.ajc.Main.runMain(Main.java:238) at org.aspectj.tools.ajc.Main.main(Main.java:82) abort ABORT -- (BCException) malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute java.io.EOFException at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:121) at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes (BcelAttributes.java:59) at org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes (BcelObjectType.java:249) at org.aspectj.weaver.bcel.BcelObjectType.<init> (BcelObjectType.java:119) at org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType (BcelWorld.java:244) at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate (BcelWorld.java:239) at org.aspectj.weaver.World.resolveToReferenceType(World.java:277) at org.aspectj.weaver.World.resolve(World.java:205) at org.aspectj.weaver.World.resolve(World.java:127) at org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory.fromEclipse (EclipseFactory.java:125) at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getSuperclass (EclipseSourceType.java:115) at org.aspectj.weaver.ReferenceType.getSuperclass (ReferenceType.java:443) at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.checkSpec (AspectDeclaration.java:170) at org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.buildInterTypeAndPerCl ause(AspectDeclaration.java:1045) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.buildInterTypeAnd PerClause(AjLookupEnvironment.java:312) at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindi ngs(AjLookupEnvironment.java:128) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile (Compiler.java:301) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile (Compiler.java:315) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation (AjBuildManager.java:728) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild (AjBuildManager.java:206) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild (AjBuildManager.java:140) 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:324) at org.aspectj.tools.ajc.Main.runMain(Main.java:238) at org.aspectj.tools.ajc.Main.main(Main.java:82) Our aspect is very simple.It has only one parameter execution (void orderentry.FMRServletBase.initializeRequestContext (com.iplanet.jato.RequestContext)) ; We never faced any such kind of erros when we compiled in windows environment. This is the environment whr we compiled the aspect JDK Version: 1.4.2_05 OS version: Solaris 8 AspectJ Version: AspectJ1.2.1 Can u just let us know how should proceed in this error. regards Hari..
Is thr any update on the bugs tht i've sent guyz