Community
Participate
Working Groups
I've got an java.lang.NullPointerException while running the aspectJ 1.2 compiler. That's the stack trace: [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] null [iajc] java.lang.NullPointerException [iajc] at org.aspectj.ajdt.internal.compiler.WeaverMessageHandler.buildSeeAlsoProblems(WeaverMessageHandler.java:172) [iajc] at org.aspectj.ajdt.internal.compiler.WeaverMessageHandler.handleMessage(WeaverMessageHandler.java:100) [iajc] at org.aspectj.weaver.ResolvedTypeX.checkInterTypeMungers(ResolvedTypeX.java:989) [iajc] at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:716) [iajc] at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:689) [iajc] at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:615) [iajc] at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:563) [iajc] at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.weave(AjCompilerAdapter.java:239) [iajc] at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.afterCompiling(AjCompilerAdapter.java:114) [iajc] at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:376) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:601) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:160) [iajc] at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:94) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:102) [iajc] at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:53) [iajc] at org.aspectj.tools.ajc.Main.run(Main.java:280) [iajc] at org.aspectj.tools.ajc.Main.runMain(Main.java:217) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.executeInSameVM(AjcTask.java:1157) [iajc] at org.aspectj.tools.ant.taskdefs.AjcTask.execute(AjcTask.java:954) [iajc] at org.apache.tools.ant.Task.perform(Task.java:341) [iajc] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:117) [iajc] at org.apache.tools.ant.Task.perform(Task.java:341) [iajc] at net.sf.antcontrib.logic.IfTask.execute(Unknown Source) [iajc] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [iajc] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [iajc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [iajc] at java.lang.reflect.Method.invoke(Method.java:324) [iajc] at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:147) [iajc] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:193) [iajc] at org.apache.tools.ant.Task.perform(Task.java:341) [iajc] at org.apache.tools.ant.Target.execute(Target.java:309) [iajc] at org.apache.tools.ant.Target.performTasks(Target.java:336) [iajc] at org.apache.tools.ant.Project.executeTarget(Project.java:1339) [iajc] at org.apache.tools.ant.Project.executeTargets(Project.java:1255) [iajc] at org.apache.tools.ant.Main.runBuild(Main.java:609) [iajc] at org.apache.tools.ant.Main.start(Main.java:196) [iajc] at org.apache.tools.ant.Main.main(Main.java:235) [if] Error in class net.sf.antcontrib.logic.IfTask Sorry, i have no simple test case for that problem...
This error occurs because type mungers don't remember their source location. In this particular case, a type munger is ITDing an abstract method onto a class and then a subclass of that class is not implementing the ITDed method. The NPE occurs if, at the point the subclass is compiled, the aspect containing the inter type declaration is in binary source form rather than real source form. When it is in binary source form the ITD doesn't know its originating source location and when we want to put out an error message that says 'subclass needs to implement abtract intertype declaration' we pass a null location as the 'see also' location. Until type mungers remember their source location, the fix is to say that if we have no source location for the munger, use the source location of the containing aspect. I have also put some code in the message handling code that will barf if anyone passes a null location again, so it will be more obvious what the problem is in future bugs. fix checked in - waiting for build.
Fix available in latest dev build from www.eclipse.org/aspectj.
*** Bug 71148 has been marked as a duplicate of this bug. ***
Fix released as part of AspectJ 1.2.1