Bug 561079 - BcelWorld log an ERROR for Lombok annotations that have retention "CLASS"
Summary: BcelWorld log an ERROR for Lombok annotations that have retention "CLASS"
Status: NEW
Alias: None
Product: AspectJ
Classification: Tools
Component: Runtime (show other bugs)
Version: 1.9.5   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-12 18:32 EDT by David Nedde CLA
Modified: 2020-04-22 16:13 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Nedde CLA 2020-03-12 18:32:06 EDT
This issue was not happening with AspectJ 1.8.

On program startup, AspectJ is logging errors on classes that have lombok.Generated or lombok.NonNull.  This is because those annotations are in the class files, but I do not ship the Lombok library at runtime as it should only be specified at build time.

The Lombok annotations have retention CLASS, so maybe those should be ignored by AspectJ?


Example snippet of delomboked code:

    @lombok.Generated
    RawBlacklistConfig(@NonNull final List<String> slotConfigNames, @NonNull final List<String> blacklistEntities) {


Stack trace:

03-12 15:31:27.800 ERROR [ InputOrchestrator 1] BcelWorld - Unable to find class 'lombok.Generated' in repository
java.lang.ClassNotFoundException: lombok.Generated not found - unable to determine URL
	at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:290)
	at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:418)
	at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:392)
	at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:112)
	at org.aspectj.weaver.World.resolveToReferenceType(World.java:486)
	at org.aspectj.weaver.World.resolve(World.java:321)
	at org.aspectj.weaver.World.resolve(World.java:231)
	at org.aspectj.weaver.UnresolvedType.resolve(UnresolvedType.java:616)
	at org.aspectj.weaver.bcel.BcelAnnotation.<init>(BcelAnnotation.java:38)
	at org.aspectj.weaver.bcel.BcelMethod.ensureAnnotationsRetrieved(BcelMethod.java:470)
	at org.aspectj.weaver.bcel.BcelMethod.hasAnnotation(BcelMethod.java:333)
	at org.aspectj.weaver.JoinPointSignature.hasAnnotation(JoinPointSignature.java:79)
	at org.aspectj.weaver.patterns.ExactAnnotationTypePattern.matches(ExactAnnotationTypePattern.java:109)
	at org.aspectj.weaver.patterns.ExactAnnotationTypePattern.matches(ExactAnnotationTypePattern.java:96)
	at org.aspectj.weaver.patterns.SignaturePattern.matchesAnnotations(SignaturePattern.java:716)
	at org.aspectj.weaver.patterns.SignaturePattern.matchesExactly(SignaturePattern.java:375)
	at org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:323)
	at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:202)
	at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
	at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:56)
	at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
	at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:56)
	at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
	at org.aspectj.weaver.ShadowMunger.match(ShadowMunger.java:113)
	at org.aspectj.weaver.Advice.match(Advice.java:113)
	at org.aspectj.weaver.bcel.BcelAdvice.match(BcelAdvice.java:161)
	at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:3328)
	at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2704)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:483)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:103)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1713)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1657)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1422)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1196)
	at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:551)
	at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:387)
	at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:116)
	at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:51)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
Comment 1 Andrew Clement CLA 2020-04-22 14:30:18 EDT
I don't understand why this has suddenly started happening with 1.9.  I will need to create a test program and look at precisely which version introduced it (was it just 1.8.12 > 1.9.0) or in a different minor. If it were an xlint message the controls are there to turn it down to ignore (which is what that control is typically for 'i know these types are missing and that's ok).
Comment 2 David Nedde CLA 2020-04-22 16:13:26 EDT
We did not see this in version 1.8.1.  We did see once we switch to version 1.9.2.  We did not try other versions in-between.