记录一次jar包排查过程:
排查ExcelUtil.getReader(inputStream)
报错:You need to add dependency of ‘poi-ooxml’ to your project, and vYou need to add dependency of ‘poi-ooxml’ to your project, and version >= 4.
场景:使用hutool,ExcelUtil.getReader(inputStream)导入.xlsx文件报错
处理方式:
-
核对相关依赖jar包版本有没有统一,版本是不是过低【排除】
-
通过跟踪源码找到真正报错的代码行【new XSSFWorkbookC(is) 报错 could not initialize class org.apache.poi.ooxml.POIXMLTypeLoader】
- 使用maven的install,将实现导出功能的module打包在本地,然后通过jd-gui查看对应的class是存在的,所以就一脸懵逼
- 将POIXMLTypeLoader类重新按照对应路径在本地项目上实现,后续还有报错 could not initialize class,但是也能查到class文件的都实现到本地项目,最终发现有“在不同的包里面有重名的class”
- 通过maven Helper将包的依赖关系找出来,然后进行相应的排除
<dependency>
<groupId>com.yuantiao</groupId>
<artifactId>data-engine</artifactId>
<exclusions>
<exclusion>
<artifactId>soap-legacy</artifactId>
<groupId>com.xkcoding</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.10.0</version>
<scope>compile</scope>
</dependency>
end: ➡️ 问题解决,耗时一天多😭。