问题一:之前生产环境上可以进行下载Excel的功能突然不能用了
报错提示信息: NoClassDefFoundError: Could not initialize class org.apache.poi.xssf.usermodel.XSSFWorkbook, 在最开始初始化的时候找不到对应的类,虽然我的Libraries里面是有的,ctrl也是能进去的,但就是找不进去
原因: 经过排查发现,是poi版本冲突了,之前的 poi版本是4.1.2,但是同事更新成了5.2.0版的poi;后来我将poi坐标还原到了4.1.2版本(PS:也有升级到5.2.3 版本解决该问题的)
问题处理参考链接: https://blog.csdn.net/weixin_42481104/article/details/131457438
相关poi坐标:
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version> 4.1.2</version>
</dependency>
问题二:处理完版本问题以后,在运行时,又有了新的错误提示:java.lang.NoClassDefFoundError: org/apache/poi/util/POILogFactory
解决: 通过Maven依赖关系图排查,发现是 commons-logging.jar 包发生了冲突,在多个版本中,我保留了其中涉及最多的1.1.1 版本。
问题三:处理完问题二后,再次运行又又有了新的错误提示: java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
解决: 不出意外的话,还是版本冲突问题…最后经过排查,是 commns-compress包 引入了多个版本,这里我保留了 poi-ooxml 中自带的版本
参考链接: https://blog.csdn.net/weixin_44504563/article/details/124036333