Community
Participate
Working Groups
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)
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).
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.