java.lang.NoClassDefFoundError与aspectjrt、aspectjweaver的联系

java.lang.NoClassDefFoundError与aspectjrt、aspectjweaver的联系首先,关于NoClassDefFoundError这个问题是什么,可以参照这里在上面有关NoClassDefFoundError这个错误,有这么一段话:NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就发生了java.lang.NoClassDefFoundError的错误,而ClassNotFou

首先,关于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!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36043.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注