easyExcel和poi的版本对应

easypoi3.0.5对应的poi版本_easypoi和poi版本对应-CSDN博客

https://github.com/alibaba/easyexcel/blob/v3.2.0/pom.xml

解决 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错-CSDN博客

参考这个文档解决的- 引入最佳版本是3.15版本

java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument问题排查解决_java.lang.classnotfoundexception: org.apache.poi.p-CSDN博客

设备维保用这个版本的

复制代码
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.15</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.15</version>
        </dependency>

java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument问题排查解决_java.lang.classnotfoundexception: org.apache.poi.p-CSDN博客

java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument问题排查解决

查理斯·耀猿

于 2023-02-07 14:57:15 发布

阅读量1.4w

收藏 6

点赞数 1

分类专栏: 项目开发问题收录 文章标签: java 开发语言

版权

项目开发问题收录

专栏收录该内容

2 篇文章0 订阅

订阅专栏

项目打包部署完成,用jar包在部署环境运行,在使用到poi相关的服务时报错

java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument

然后我查找了些解决办法,对处理方法做了梳理:

使用XSSWorkbook,使用时出错

pom文件少引入依赖

包依赖冲突

使用模块没有声明所需依赖(这是我遇到的问题)

自己修改POIXMLDocumentPart文件中的代码

第一种情况解决办法:

最大的可能是引入的jar包过高或者过低

poi相关的poi有三个:poi、poi-ooxml、poi-ooxml-schemas

引入最佳版本是3.15版本

过低,找不到方法导致报错

过高,由于poi包系列更新较快,维护更新的版本不够稳定,导致很多问题

当然如果你使用的一直是高版本,就不需要强行下降版本,可能问题不是第一种,因为3.15版本也是隐藏些问题的。

第二种情况解决办法

在java操作word或excel抛出这样的异常时,一般情况下是pom文件少引入依赖

加上对应的pom里面的maven依赖

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>4.1.0</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>4.1.0</version>

</dependency>

1

2

3

4

5

6

7

8

9

10

一般这种情况较少,都会添加,但是也不除外是种被忽略的问题。

第三种情况解决办法

在pom文件引入依赖里面,引入了其它版本的jar包,导致运行时找不到对应的类

全局查询相关pom依赖,将多余的依赖文件移除

第四种情况解决办法

当前A模块没有引入所需依赖,引入依赖为主模块和公共B模块,导致运行时A模块中无法确定使用哪个类,类似于重复依赖

找到出现错误的类文件,我出错的类文件是FileStencilHandleUtils

然后找到这个类模块里面的pom,添加上依赖,然后往上找pom,找到公共pom和主pom文件,将里面的依赖去除。

这样就可以解决掉问题。当然如果还有其它模块需要用,可保留主pom,需要的模块声明所需依赖。

第五种情况解决办法

上述中已经表明poi系列有很多bug,可以通过自己对具体的方法修改,修补bug,但这个方法不适合所有人,谨慎使用

下载或者找到对应的jar包

将jar包解压,找到里面的文件XWPFStylesDocument.java文件

位置是在\org.apache.poi.xwpf.converter.core-1.0.6-sources\org\apache\poi\xwpf\converter\core\styles

打开文件,将文件中里面的方法进行修改

修改完成后,将整个模块放入代码中,或者重新打成jar包,依赖引入。

第五种解决方法来自于博主:「大魔王的日常Log」的原创文章

原文链接:https://blog.csdn.net/TaoShao521/article/details/126170434


补充知识点:

NoClassDefFoundError问题 和 ClassNotFoundException问题不一样,前者一般发生在编译时能找到对应的类,但运行时找不到,后者发生在编译时就找不到对应的类。

文章知识点与官方知识档案匹配,可进一步学习相关知识

Java技能树首页概览148851 人正在系统学习中


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_45937536/article/details/128904930

相关推荐
T0uken3 小时前
【Python】UV:单脚本依赖管理
chrome·python·uv
powerfulzyh2 天前
Docker中运行的Chrome崩溃问题解决
chrome·docker·容器
代码的乐趣2 天前
支持selenium的chrome driver更新到136.0.7103.92
chrome·python·selenium
努力学习的小廉2 天前
深入了解linux系统—— 自定义shell
linux·运维·chrome
fenglllle3 天前
macOS 15.4.1 Chrome不能访问本地网络
chrome·macos
yousuotu3 天前
python如何提取Chrome中的保存的网站登录用户名密码?
java·chrome·python
颜淡慕潇4 天前
【Python】超全常用 conda 命令整理
chrome·python·conda
网硕互联的小客服4 天前
如何解决 Linux 系统文件描述符耗尽的问题
linux·运维·chrome
海尔辛4 天前
学习黑客正经版Bash 脚本入门教程
chrome·学习·bash
@PHARAOH5 天前
HOW - 在 Mac 上的 Chrome 浏览器中调试 Windows 场景下的前端页面
前端·chrome·macos