Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Strange compiler crash (AspectJ 1.8/Maven plugin 1.7)

NPEs are always a sign of a compiler bug. I've raised this and fixed it as https://bugs.eclipse.org/bugs/show_bug.cgi?id=444398

I guess the situation of annotation style abstract aspects extending a regular java class just doesn't come up very often. But you are also at the mercy of ordering too (due to compilation pipelining). If the class had gotten through the pipeline ahead of the abstract aspect, it would have worked (and if you'd written it in code style aspects, it would have worked).

Andy

On 17 September 2014 06:42, Loddar <ajunit.contact@xxxxxxxxxxxxxx> wrote:
Hi Alexander,

Yes, there are some concrete Aspects. You have to look under test/aspect/.. . But I think, these won't help.

 The actually purpose of ajUnit is to provide unit tests for pointcuts. Therefore it make no sence to provide concrete apsects.

These happens also if you do it with the around based aspect. It seems that only the before aspect has no problem at all.

thx for your support, anyway.

Marko



> Am 17.09.2014 um 15:08 schrieb "Alexander Kriegisch" <alexander@xxxxxxxxxxxxxx>:
>
> Okay, I tried via remote access from my tablet and cloned the repo. I guess you have uncovered an ajc bug, but only one of the AJ devs can say for sure. What I can say is that the problem is unrelated to the Maven plugin version, AspectJ version (also tried with 1.7.4, so it must be an older problem) or even the Java version (downgraded quick & dirty to Java 1.7 incl. a few source code changes). The ajc core dump always occurs.
>
>
>
> Alexander Kriegisch schrieb am 17.09.2014 14:24:
>
>> I have not cloned the repo yet (I have no access to a PC now), but have a question: You seem to be extending an abstract aspect with yet another abstract aspect. Do you also have a concrete sub-aspect anywhere? Can you post full aspects instead of just class declarations? Something like a self-contained, compileable, reproduceable sample?
>>
>> Please also note that AspectJ Maven Plugin version 1.7 has only just been released a couple of days ago, so there might also be a problem in the plugin itself.
>>
>>
>> Maybe later today I can provide a more qualified answer, I just wanted to send a few quick hints/questions to get us started.
>>
>>
>> --
>>
>> Alexander Kriegisch
>>
>> http://scrum-master.de <http://scrum-master.de>
>>
>>
>> Am 17.09.2014 um 14:02 schrieb ajUnit <ajunit.contact@xxxxxxxxxxxxxx <mailto:ajunit.contact@xxxxxxxxxxxxxx> >:
>>
>>
>>> Hello,
>>>
>>> I've got a strange compiler crash (using aspectj maven plugin). After correcting an mistake (no compiler has been prodcued an error):
>>>
>>>> @Aspect
>>>> public abstract aspect AjUnitAfterAspect extends AjUnitAnnotationAspect {
>>>>     // ...
>>>> }
>>> ... to this
>>>> @Aspect
>>>> public abstract class AjUnitAfterAspect extends AjUnitAnnotationAspect {
>>>>     // ...
>>>> }
>>>
>>> Steps to reproduce:
>>>
>>> 1. Clone my project from github (https://github.com/loddar/ajunit <https://github.com/loddar/ajunit> ) .
>>>
>>> 2. Execute mvn clean install ==> Ok.
>>>
>>> 3. Switch to branch origin/AJC-CRASH.
>>>
>>> 4. Execute mvn clean install ==> CRASH.
>>>
>>>
>>> I got this crash report (full report see appendix):
>>>
>>> ---- AspectJ Properties ---
>>> AspectJ Compiler 1.8.2 built on Thursday Aug 14, 2014 at 21:45:02 GMT
>>> ---- Dump Properties ---
>>> Dump file: ajcore.20140917.132144.654.txt
>>> Dump reason: java.lang.NullPointerException
>>> Dump on exception: true
>>> Dump at exit condition: abort
>>> ---- Exception Information ---
>>> java.lang.NullPointerException
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getPerClauseForTypeDeclaration(EclipseSourceType.java:1034)
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.lookupPerClauseKind(EclipseSourceType.java:1136)
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getPerClauseForTypeDeclaration(EclipseSourceType.java:1043)
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getPerClause(EclipseSourceType.java:1023)
>>>    at org.aspectj.weaver.ReferenceType.getPerClause(ReferenceType.java:911)
>>>    at org.aspectj.weaver.bcel.AtAjAttributes.handleAspectAnnotation(AtAjAttributes.java:544)
>>>    at org.aspectj.weaver.bcel.AtAjAttributes.readAj5ClassAttributes(AtAjAttributes.java:241)
>>>    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:395)
>>>    at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:162)
>>>    at org.aspectj.weaver.bcel.BcelWorld.buildBcelDelegate(BcelWorld.java:410)
>>>    at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:494)
>>>    at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:456)
>>>    at org.aspectj.weaver.bcel.BcelWeaver.addClassFile(BcelWeaver.java:453)
>>>    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:506)
>>>    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:447)
>>>    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:432)
>>>    at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:103)
>>>    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:822)
>>>    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:480)
>>>    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:420)
>>>    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:112)
>>>    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:524)
>>>
>>>
>>> Thx in advance
>>>
>>>
>>> Marko
>>> --
>>> Visit ajUnit @ https://github.com/loddar/ajunit <https://github.com/loddar/ajunit>
>>>
>>>
>>>
>>> <ajcore.20140917.132854.231.txt>
>>>
>>> _______________________________________________
>>> aspectj-users mailing list
>>> aspectj-users@xxxxxxxxxxx <mailto:aspectj-users@xxxxxxxxxxx>
>>> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users <https://dev.eclipse.org/mailman/listinfo/aspectj-users>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top