@Timed注解引发AspectJ类未找到异常,已引入依赖仍报错
问题:ClassNotFoundException: org.aspectj.lang.ProceedingJoinPoint 未解决
问题背景
我的问题症状与某StackOverflow问题完全一致,但按照其已采纳的解决方案操作后仍未解决。
pom.xml 配置
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.0</version> <relativePath/> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency>
Application.java 代码片段
@Bean public TimedAspect timedAspect(MeterRegistry registry) { return new TimedAspect(registry); }
抛出的异常信息
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/aspectj/lang/ProceedingJoinPoint at io.micrometer.core.aop.TimedAspect.<init>(TimedAspect.java:73) at com..mcs.Application.timedAspect(Application.java:29) at com..mcs.Application$$EnhancerBySpringCGLIB$$b6a83328.CGLIB$timedAspect$1(<generated>) at com..mcs.Application$$EnhancerBySpringCGLIB$$b6a83328$$FastClassBySpringCGLIB$$be4485cd.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) at com..mcs.Application$$EnhancerBySpringCGLIB$$b6a83328.timedAspect(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 21 more Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/ProceedingJoinPoint ... 33 more Caused by: java.lang.ClassNotFoundException: org/aspectj/lang/ProceedingJoinPoint at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
依赖树信息
[INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:2.4.0:compile [INFO] | +- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.4.0:compile [INFO] | | \- org.springframework.boot:spring-boot-actuator:jar:2.4.0:compile [INFO] | \- io.micrometer:micrometer-core:jar:1.6.1:compile [INFO] | +- org.hdrhistogram:HdrHistogram:jar:2.1.12:compile [INFO] | \- org.latencyutils:LatencyUtils:jar:2.0.3:runtime [INFO] +- org.springframework:spring-aspects:jar:5.3.1:compile [INFO] | \- org.aspectj:aspectjweaver:jar:1.9.6:compile
疑惑点
aspectjweaver-1.9.6.jar中明明包含org\aspectj\lang\ProceedingJoinPoint.class,理论上该类应该能被正常加载,实在无法理解问题所在。
相关问题参考:ClassNotFoundException - org.aspectj.lang.annotation.Around
问题解决更新
问题根源是IntelliJ IDEA未与pom依赖同步,在Maven标签页重新加载依赖后问题解决。
内容的提问来源于Stack Exchange,提问作者Leos Literak
相关产品推荐
相关产品推荐

