目录
前言
解决方法
复盘分析
前言
使用easyexcel时,研发环境正常, 服务器编译正常, EasyExcel调用方法的时候, 服务器出现Could not initialize class net.sf.cglib.beans.BeanMap$Generator问题。
报错信息
com.alibaba.excel.exception.ExcelAnalysisException:
java.lang.NoClassDefFoundError:
Could not initialize class net.sf.cglib.beans.BeanMap$Generator
...
一般遇到NoClassDefFoundError类似的异常时,大多数都是因为jar包冲突引起的。
解决方法
发现是jar包版本冲突的问题
-
easyexcel 3.3.0 依赖 cglib 3.1,cglib又依赖 asm;
-
项目的springboot版本2.x,底层会依赖 asm
-
springboot最好是不要动它, 查询springboot的asm的依赖版本, 将cglib依赖asm版本保持一致
-
所以最后只需要指定cglib的版本即可
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
</dependency>
复盘分析
图解(借图)
maven官方仓库
目前最新版本9.5
发现3.3.1版本以后的就改了groupId
- 由于项目使用的 springboot 版本是 2.x, 需要依赖 asm3.1,
- easyexcel 2.1.6 依赖的是 asm 4.2,, easyexcel依赖asm4.2的时候自然就找不到了
- 最后, 此类问题用idea插件比对下, 找出所有jar冲突的地方解决, 即可避免此类问题
有用请点赞,养成良好习惯!
疑问、交流、鼓励请留言!
欢迎补充!!!