原因:jar包冲突
1.项目中引入了easyexcel,在使用的时候直接报下面的错
com.alibaba.excel.exception.ExcelGenerateException: Can not close IO
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.apache.poi.util.POILogger, but class was expected
2.原因是因为项目中已经引入了easypoi,此时又引入了easyexcel便会引起冲突
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.1.2</version>
</dependency>
3.进入easyexcel查看附带的依赖,使用ctrl + alt + B快捷键进入
4.你会发现有一个 poi-ooxml 版本是 3.17
5.进入easypoi-base查看附带的依赖,使用ctrl + alt + B快捷键进入
6.你会发现有一个 poi-ooxml 版本是 4.1.2
7.结论:因为存在两个版本的 poi-ooxml ,所以当我们调用方法后,他不知道使用那个一个依赖,造成了冲突
8.解决方案:排除 easyexcel 里的 poi-ooxml,之后问题就解决了
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.0-beta1</version>
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</exclusion>
</exclusions>
</dependency>