nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Refle

本文记录了一次Spring AOP配置过程中出现的NoClassDefFoundError异常,并详细解释了错误原因及解决方案,即在pom.xml文件中添加aspectjweaver依赖。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0’: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorldReflectionWorldExceptionatorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)atorg.springframework.beans.factory.support.AbstractBeanFactory1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:92)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:101)
at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:103)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.java:243)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:466)
… 55 more
Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorldReflectionWorldExceptionatjava.lang.Class.getDeclaredMethods0(NativeMethod)atjava.lang.Class.privateGetDeclaredMethods(Class.java:2701)atjava.lang.Class.getDeclaredMethods(Class.java:1975)atorg.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:572)atorg.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:489)atorg.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:475)atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1065)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1038)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1477)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1222)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)67moreCausedby:java.lang.ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorldReflectionWorldException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
… 83 more
原因是pom.xml缺少aspectj 依赖,so 在pom.xml中加入

    <dependency>
      <groupId> org.aspectj</groupId >
      <artifactId> aspectjweaver</artifactId >
      <version> 1.6.11</version >
    </dependency>

问题解决了 逃:)

`java.lang.NoClassDefFoundError` 通常表示Java虚拟机(JVM)在编译时可以找到某个类,但在运行时却找不到该类的定义。当出现 “invocation of init method fail” 且嵌套异常为 `java.lang.NoClassDefFoundError: org/` 时,可尝试以下解决办法: ### 检查类路径 确保包含 `org` 包下相关类的JAR文件已正确添加到类路径中。在不同的运行环境下,类路径的设置方式有所不同。 - **命令行运行**:使用 `-cp` 或 `-classpath` 选项指定类路径。 ```sh java -cp path/to/your/jar1.jar:path/to/your/jar2.jar YourMainClass ``` - **IDE中运行**:在IDE(如IntelliJ IDEA、Eclipse)的项目设置里,检查并确保相关依赖已正确添加到项目的类路径中。 ### 检查依赖冲突 可能存在依赖冲突,即不同的依赖版本中包含了相同类名但不同实现的类。可以使用Maven或Gradle等构建工具来解决依赖冲突。 - **Maven**:使用 `mvn dependency:tree` 命令查看依赖树,找出冲突的依赖并排除。 ```xml <dependency> <groupId>your.group.id</groupId> <artifactId>your-artifact-id</artifactId> <version>your-version</version> <exclusions> <exclusion> <groupId>conflicting.group.id</groupId> <artifactId>conflicting-artifact-id</artifactId> </exclusion> </exclusions> </dependency> ``` - **Gradle**:使用 `gradle dependencies` 命令查看依赖关系,使用 `exclude` 排除冲突的依赖。 ```groovy implementation('your.group.id:your-artifact-id:your-version') { exclude group: 'conflicting.group.id', module: 'conflicting-artifact-id' } ``` ### 检查JAR文件完整性 确保相关的JAR文件没有损坏。可以尝试重新下载相关的JAR文件,并替换原有的文件。 ### 检查类加载器 有时候,类加载器可能无法正确加载类。可以检查代码中是否有自定义的类加载器,确保其配置正确。 ### 检查环境变量 确保 `CLASSPATH` 环境变量没有被错误地修改或覆盖。可以在命令行中使用 `echo $CLASSPATH`(Linux/Mac)或 `echo %CLASSPATH%`(Windows)查看当前的类路径设置。 ### 检查版本兼容性 确保使用的所有库和框架版本相互兼容。不兼容的版本可能会导致类加载问题。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值