前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/P

com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/P

作者头像
鲲志说
发布于 2025-04-07 13:22:10
发布于 2025-04-07 13:22:10
13000
代码可运行
举报
运行总次数:0
代码可运行

想实现excel文件内容读取到数据库中,而且excel是存在合并单元格这种情况的,便考虑借助EasyExcel来实现

前置操作

  • 因为要使用EasyExcel,所以在pom.xml中引入EasyExcel和poi相关依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
        </dependency>
</dependencies>

<!-- 管理子项目中引用的依赖的版本 -->
    <dependencyManagement>
        <dependencies>
    <!--只是声明,没有导入-->
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.0.0</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.0.0</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

问题

运行代码时,发现报错如下

com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

原因

这个异常表明在使用阿里巴巴的 EasyExcel 库时,发生了 ExcelAnalysisException,并且其中的原因是 java.lang.NoClassDefFoundError: org/apache/poi/P。这通常是因为缺少 Apache POI 库的相关依赖引起的。

  1. 因为之前项目的pom里引入过poi-ooxml版本是4.0.0,所以直接引了过来,实际应该看easyexcel依赖中的poi-ooxml版本。
  2. 点击easyexcel依赖可以看到poi-ooxml版本是3.17

解决

要解决这个问题,需要确保项目中包含了 Apache POI 库的正确版本,正如上所述,我是从之前项目的pom里直接引入的,怀疑是poi-ooxml版本的问题

我的解决方法

修改poi-ooxml版本为easyexcel中的版本 如上原因,把poi-ooxml版本替换为3.17,再去运行项目,果然解决了

一般的解决步骤

添加 Apache POI 依赖

在项目中,确保已经添加了 Apache POI 的依赖。具体的配置方式取决于你使用的构建工具,比如 Maven 或 Gradle。

对于 Maven,在你的 pom.xml 文件中添加以下依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
    <!-- 其他依赖项 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>你需要的版本号</version>
    </dependency>
</dependencies>

对于 Gradle,在你的 build.gradle 文件中添加以下依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dependencies {
    // 其他依赖项
    implementation 'org.apache.poi:poi:你需要的版本号'
}

确保你选择的 Apache POI 版本与 EasyExcel 兼容

查看 EasyExcel 版本

确保你使用的 EasyExcel 版本与你添加的 Apache POI 版本兼容。 可以查看 EasyExcel 的文档或者官方说明,了解哪个版本与哪个版本的 Apache POI 最为匹配。

检查依赖冲突

有时候,项目中可能存在多个库引入了不同版本的 Apache POI,导致依赖冲突。你可以使用你的构建工具的命令来查看项目的依赖关系,以确定是否存在冲突。

对于 Maven,你可以运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn dependency:tree

对于 Gradle,你可以运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./gradlew dependencies

查看输出,检查是否有多个版本的 Apache POI 被引入


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置操作
  • 问题
  • 原因
  • 解决
    • 我的解决方法
    • 一般的解决步骤
      • 添加 Apache POI 依赖
      • 查看 EasyExcel 版本
      • 检查依赖冲突
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档