学无先后,达者为师

网站首页 编程语言 正文

Could not initialize class net.sf.cglib.beans.BeanMap$Generator异常解决

作者:慕白Lee 更新时间: 2023-09-17 编程语言

目录

前言

解决方法

复盘分析


前言

使用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包版本冲突的问题

  1. easyexcel 3.3.0 依赖 cglib 3.1,cglib又依赖 asm;

  2. 项目的springboot版本2.x,底层会依赖 asm

  3. springboot最好是不要动它, 查询springboot的asm的依赖版本, 将cglib依赖asm版本保持一致

  4. 所以最后只需要指定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冲突的地方解决,  即可避免此类问题

有用请点赞,养成良好习惯!

疑问、交流、鼓励请留言!

欢迎补充!!!

原文链接:https://libusi.blog.csdn.net/article/details/132495246

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新