当前位置: 首页 > news >正文

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

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

http://www.xdnf.cn/news/831007.html

相关文章:

  • linux下llt测试技巧,HLT与LLT测试简介
  • 软件运维服务方案
  • Java程序员必读的10本书籍
  • 理想低通滤波器、Butterworth滤波器和高斯滤波器
  • 电脑病毒可以直接破坏硬件吗?23年前的CIH做到了
  • 一家全是学霸!王力宏的哥哥也是博士,近日获5000余万拨款用于这项研究
  • 什么是逆向工程?特点是?应用领域有哪些?
  • SVN服务器搭建
  • 浅谈.htaccess
  • Java中Map的 entrySet() 详解以及用法(四种遍历map的方式)
  • PID控制算法详解
  • DNS学习笔记--解析www.baidu.com域名过程
  • python读取pdf翻译生成word
  • 深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解
  • 原生 js 实现轮播图
  • Activity的任务栈Task以及启动模式与Intent的Flag详解(经典博文,值得收藏!)(1)
  • Linux执行文件为什么出现no such file啊
  • 想将有色彩的视频进行去色处理就这样做
  • spss modeler出现使用错误提…
  • 哈希算法(哈希函数)基本
  • 简单vlan配置
  • CSS clearfix 清除浮动 用法详解
  • [CTF夺旗赛] BUUCTF N1BOOK 第二章 web进阶
  • Talos实验室深入我国DDoS黑市DuTe 揭露各种DDoS团伙、平台、工具及攻击
  • 传说中的神器--磁力链接
  • 因特网上的英语学习资源 [转自 www.chinadaily.com.cn]
  • 【RAR技巧】rar压缩包如何进行加密、解密?
  • Fastjson漏洞
  • 【RDMA】3. RDMA基本元素和编程基础
  • Linux系统之安装java开发环境