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

相关推荐
极智-9961 天前
【Chrome谷歌浏览器】官方下载方式?【图文详解】电脑版下载?正版安全下载?最新版下载?
chrome·chrome谷歌浏览器·chrome下载安装·官方下载方式·chrome谷歌浏览器下载安装·chrome浏览器官网·chrome官网下载安装
AI浩2 天前
Redis中的RPOP、BRPOP、LPOP 和 BLPOP
数据库·chrome·redis
九皇叔叔2 天前
Linux Shell 中的 $():命令替换的核心用法
linux·运维·chrome
shan~~3 天前
linux达梦数据库操作
linux·数据库·chrome
非凡ghost3 天前
猫眼浏览器(Chrome内核增强版浏览器)官方便携版
前端·网络·chrome·windows·软件需求
Never_Satisfied3 天前
在JavaScript / HTML中,Chrome报错Refused to execute inline script
javascript·chrome·html
潇凝子潇3 天前
AWS CLI自动删除资源脚本
chrome·云计算·aws
Never_Satisfied3 天前
在JavaScript / HTML中,Chrome报错此服务器无法证实它就是xxxxx - 它的安全证书没有指定主题备用名称
javascript·chrome·html
守城小轩5 天前
Chromium 138 编译指南 - Android 篇:从Linux版切换到Android版(六)
android·chrome·指纹浏览器·浏览器开发·超级浏览器
守城小轩5 天前
Chromium 138 编译指南 - Android 篇:环境搭建与准备(一)
android·chrome·指纹浏览器·浏览器开发