java.lang.NoClassDefFoundError与aspectjrt、aspectjweaver的联系
来源:互联网 发布:零壹乐队 知乎 编辑:程序博客网 时间:2024/05/20 19:17
首先,关于NoClassDefFoundError这个问题是什么,可以参照这里
在上面有关NoClassDefFoundError这个错误,有这么一段话:
NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就发生了java.lang.NoClassDefFoundError的错误,而ClassNotFoundException是在编译的时候在classpath中找不到对应的类而发生的错误。ClassNotFoundException比NoClassDefFoundError容易解决,是因为在编译时我们就知道错误发生,并且完全是由于环境的问题导致。而如果你在J2EE的环境下工作,并且得到NoClassDefFoundError的异常,而且对应的错误的类是确实存在的,这说明这个类对于类加载器来说,可能是不可见的。
我今天就遇到了这个错误,一个很简单的切面的问题,测试时报错NoClassDefFoundError,最终原因是少了aspectjweaver
的jar包,但是我的pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>BeanAssemble</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.9</version> </dependency> </dependencies></project>
我本以为有了aspectjrt这个包之后就万事大吉了,却没想到还会出现如此的错误。
那么aspectjrt和aspectjweaver又有什么联系和区别呢?
首先,Spring的Aop本身就是通过AspectJ实现的,然而在Spring较高版本(大概在3.0)之后,就不再一起发布以来包了,而是将aspectjweaver作为可选依赖引入,所以说Spring Aop依赖aspectj来实现。
上面解释了NoClassDefFoundError错误出现的原因,本质就是缺少依赖包。
那为什么我导入了asperjrt这个包不行呢?
在maven搜索aspectj出现如下两条:
这两个有什么关系呢?
我找到了如下的解释:
Spring-aspects 实现类似 aspectj 注解方式的时候,借用了 aspectjweaver.jar 中定义的一些annotation 和 class,然而其并不使用 Aspectj 的字节码织入功能。
好了,归根结底,我的解决方法是导入了aspectjweaver.jar!
- java.lang.NoClassDefFoundError与aspectjrt、aspectjweaver的联系
- aspectjrt.jar,aspectjweaver.jar
- aspectjweaver.jar && aspectjrt.jar
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError
- java.lang.NoClassDefFoundError与java.lang.ClassNotFoundException
- 让spring3.0可以使用aop注解的方法是导入两个jar包aspectjrt.jar aspectjweaver.jar
- java.lang.NoClassDefFoundError:...... 的解决方法
- java.lang.NoClassDefFoundError 的解决办法
- java.lang.NoClassDefFoundError的问题解决!
- java.lang.NoClassDefFoundError:的处理
- 莫名其妙的java.lang.NoClassDefFoundError
- java.lang.NoClassDefFoundError的解决方法
- java.lang.NoClassDefFoundError的几种原因与解决方法
- oracle中的decode的使用
- Python中不重复三位数算法的计算
- 使用Mat.at访问数据的对应关系
- 解决VirtualBox中的MySQL数据库,Mac无法访问的问题(通过端口映射的方式)
- Mac下对ShadowsocksX进行Hook,实现自动更新账号
- java.lang.NoClassDefFoundError与aspectjrt、aspectjweaver的联系
- C++语言程序设计笔记(2)
- 微信公众号
- CodeForces 604 B.More Cowbell(贪心)
- android-ExpandableListView的使用
- 路径规划(京东2016实习生真题)
- Spring学习总结——Spring实现AOP的多种方式
- faster rcnn训练自己的数据集demo和训练过程error总结
- YARN源代码解读