-
Notifications
You must be signed in to change notification settings - Fork 784
Closed
Description
Adding spring-cloud-sleuth-core
to a Spring Boot application leads to the following:
Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutPrimitive
at org.springframework.aop.aspectj.AspectJExpressionPointcut.<clinit>(AspectJExpressionPointcut.java:91) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory.getPointcut(ReflectiveAspectJAdvisorFactory.java:212) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory.getAdvisor(ReflectiveAspectJAdvisorFactory.java:194) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory.getAdvisors(ReflectiveAspectJAdvisorFactory.java:126) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.aspectj.annotation.BeanFactoryAspectJAdvisorsBuilder.buildAspectJAdvisors(BeanFactoryAspectJAdvisorsBuilder.java:110) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator.findCandidateAdvisors(AnnotationAwareAspectJAutoProxyCreator.java:95) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:101) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.java:251) ~[spring-aop-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:1141) ~[spring-beans-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:1114) ~[spring-beans-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:506) ~[spring-beans-5.2.6.BUILD-20200423.171221-90.jar:5.2.6.BUILD-SNAPSHOT]
... 36 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.tools.PointcutPrimitive
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_232]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_232]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) ~[na:1.8.0_232]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_232]
... 47 common frames omitted
Debugging, this is related to the use of @Aspect
that requires AspectJ. TraceSchedulingAutoConfiguration
is opting-in for AspectJ but does not enforce that with a class check.
I think this should be revisited to either back-off or provide AspectJ by default. I've added a condition on my end to back-off if AspectJ isn't available.
dlehammer