admin管理员组文章数量:1031654
com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/P
想实现excel文件内容读取到数据库中,而且excel是存在合并单元格这种情况的,便考虑借助EasyExcel来实现
前置操作
- 因为要使用EasyExcel,所以在pom.xml中引入EasyExcel和poi相关依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
</dependencies>
<!-- 管理子项目中引用的依赖的版本 -->
<dependencyManagement>
<dependencies>
<!--只是声明,没有导入-->
<!-- .apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency>
<!-- .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 库的相关依赖引起的。
- 因为之前项目的pom里引入过poi-ooxml版本是4.0.0,所以直接引了过来,实际应该看easyexcel依赖中的poi-ooxml版本。
- 点击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运行复制<dependencies>
<!-- 其他依赖项 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>你需要的版本号</version>
</dependency>
</dependencies>
对于 Gradle,在你的 build.gradle 文件中添加以下依赖:
代码语言:javascript代码运行次数:0运行复制dependencies {
// 其他依赖项
implementation 'org.apache.poi:poi:你需要的版本号'
}
确保你选择的 Apache POI 版本与 EasyExcel 兼容
查看 EasyExcel 版本
确保你使用的 EasyExcel 版本与你添加的 Apache POI 版本兼容。 可以查看 EasyExcel 的文档或者官方说明,了解哪个版本与哪个版本的 Apache POI 最为匹配。
检查依赖冲突
有时候,项目中可能存在多个库引入了不同版本的 Apache POI,导致依赖冲突。你可以使用你的构建工具的命令来查看项目的依赖关系,以确定是否存在冲突。
对于 Maven,你可以运行以下命令:
代码语言:javascript代码运行次数:0运行复制mvn dependency:tree
对于 Gradle,你可以运行以下命令:
代码语言:javascript代码运行次数:0运行复制./gradlew dependencies
查看输出,检查是否有多个版本的 Apache POI 被引入
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2023-12-21,如有侵权请联系 cloudcommunity@tencent 删除comexcelnoclassdeffounderrorjavaapache
com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/P
想实现excel文件内容读取到数据库中,而且excel是存在合并单元格这种情况的,便考虑借助EasyExcel来实现
前置操作
- 因为要使用EasyExcel,所以在pom.xml中引入EasyExcel和poi相关依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
</dependencies>
<!-- 管理子项目中引用的依赖的版本 -->
<dependencyManagement>
<dependencies>
<!--只是声明,没有导入-->
<!-- .apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency>
<!-- .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 库的相关依赖引起的。
- 因为之前项目的pom里引入过poi-ooxml版本是4.0.0,所以直接引了过来,实际应该看easyexcel依赖中的poi-ooxml版本。
- 点击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运行复制<dependencies>
<!-- 其他依赖项 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>你需要的版本号</version>
</dependency>
</dependencies>
对于 Gradle,在你的 build.gradle 文件中添加以下依赖:
代码语言:javascript代码运行次数:0运行复制dependencies {
// 其他依赖项
implementation 'org.apache.poi:poi:你需要的版本号'
}
确保你选择的 Apache POI 版本与 EasyExcel 兼容
查看 EasyExcel 版本
确保你使用的 EasyExcel 版本与你添加的 Apache POI 版本兼容。 可以查看 EasyExcel 的文档或者官方说明,了解哪个版本与哪个版本的 Apache POI 最为匹配。
检查依赖冲突
有时候,项目中可能存在多个库引入了不同版本的 Apache POI,导致依赖冲突。你可以使用你的构建工具的命令来查看项目的依赖关系,以确定是否存在冲突。
对于 Maven,你可以运行以下命令:
代码语言:javascript代码运行次数:0运行复制mvn dependency:tree
对于 Gradle,你可以运行以下命令:
代码语言:javascript代码运行次数:0运行复制./gradlew dependencies
查看输出,检查是否有多个版本的 Apache POI 被引入
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2023-12-21,如有侵权请联系 cloudcommunity@tencent 删除comexcelnoclassdeffounderrorjavaapache
本文标签: comalibabaexcelexceptionExcelAnalysisException javalangNoClassDefFoundError orgapachepoiP
版权声明:本文标题:com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: orgapachepoiP 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747853255a2217846.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论