项目场景:
需要收集客户信息进行制卡,导入客户制卡信息文件,处理之后导出制卡结果文件。
问题描述:
写测试用例单独启项目的时候没什么问题,把依赖添加到项目当中运行时报错。
(1)
NoSuchMethodError: org.apache.poi.ss.usermodel.CellStyle.setAlignment(S)V
(2)
org.apache.poi.ss.usermodel,cell,getcelltype
分析解决:
首先是第一个错误存在于导出,测试用例中没什么问题,可以正常导入导出,但是到依赖提供的工具类方法是抛出异常,通过官方的issue中了解到是版本冲突问题。 有很多解决方法都是将easypoi的依赖换位最新版,但是并没有什么作用,并不能解决与apache-poi依赖冲突的问题。
easypoi依赖:
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>
其所依赖的apache的poi依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
这时候第一个问题解决了,但是又出现了第二个问题,通过debug还是依赖工具类的问题,最终解决方案为(替换Apache的poi依赖完美解决):
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17-beta1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17-beta1</version>
</dependency>
|