在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问题不一样,前者一般发生在编译时能找到对应的类,但运行时找不到,后者发生在编译时就找不到对应的类。
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
POI 上传文件坑,找了两个小时终于找到解决方案了
结论:org.apache.commons
POI 需要依赖commons 而commons 版本太低,缺失util导致,
解决办法:更换 org.apache.commons 高版本依赖即可
java.io.IOException: or
Java 使用EasyExcel导出报错,NoClassDefFoundError: org/apache/poi/util/DefaultTempFileCreationStrategy
java.lang.NoClassDefFoundError: org/apache/poi/wp/usermodel/Paragraph
Caused by: java.lang.ClassNotFoundException: org.apache.poi.wp.usermodel.Paragraph
下载poi-ooxml这个
二、原因解析
经过对比发现4.2.1版本比旧版本多了ooxml包,导致找不到POIXMLDocumentPart,所以这里的解决方案有两个:
1.可以在项目中把旧版本的jar包源码修改后上传到maven仓库。
2.依旧使用4.2.1版本并把配套的jar包依赖一同升级。
本篇文章介绍第二种解决方法。
三、依赖包
依赖包中主要是xdocreport的版本一定要升级到2.0.2。
<dependency>
解决异常Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ooxml/POIXMLDocumentPart
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ooxml/POIXMLDocumentPart
at com.deepoove.poi.XWPFTemplate.compile(XWPFTempla
引用\[1\]:NoClassDefFoundError问题和ClassNotFoundException问题不一样,前者一般发生在编译时能找到对应的类,但运行时找不到,后者发生在编译时就找不到对应的类。引用\[2\]:在项目打包部署完成后,使用jar包在部署环境运行时,出现了java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument的错误。根据我的了解,这个错误通常是由于缺少依赖包或者依赖冲突导致的。解决这个问题的方法有几种:使用XSSWorkbook替代POIXMLDocument,确保pom文件中引入了正确的依赖包,检查是否有依赖冲突,以及检查是否在使用模块中声明了所需的依赖。另外,还有一种解决办法是修改POIXMLDocumentPart文件中的代码。\[2\]引用\[3\]:为了解决这个问题,你可以在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>
这样应该能解决Caused by: java.lang.ClassNotFoundException: org.apache.poi.POIXMLTypeLoader的问题。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument问题排查解决](https://blog.csdn.net/weixin_45937536/article/details/128904930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
cannot update table Temp Table because it does not have a replica identity and publishes updates in