升级Apache POI从5.2.4到5.3时创建XSSFWorkbook遇NoSuchMethodError
解决Apache POI 5.3升级后的NoSuchMethodError问题
问题原因
Apache POI 5.3版本对依赖的Apache Commons IO版本要求提升了,旧版本(比如POI 5.2.4依赖的commons-io 2.11.0及以下)里没有BoundedInputStream.builder()这个方法,项目中如果存在版本冲突,就会触发这个错误。
修复方案
- 直接升级项目中的commons-io依赖到符合POI 5.3要求的版本(至少是2.12.0及以上,建议匹配POI官方推荐的版本)
- Maven项目修改pom.xml:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.13.0</version> </dependency> - Gradle项目修改build.gradle:
implementation 'commons-io:commons-io:2.13.0'
- Maven项目修改pom.xml:
- 检查项目依赖树,排除低版本的commons-io依赖。比如Maven用
dependency:tree命令查看依赖关系后,在POI相关依赖中排除旧版本:
之后手动引入指定的高版本commons-io即可。<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.3.0</version> <exclusions> <exclusion> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </exclusion> </exclusions> </dependency>
验证
修改依赖后重新构建项目,再执行创建XSSFWorkbook的代码,即可解决方法找不到的错误。
内容的提问来源于stack exchange,提问作者user30389747
相关产品推荐
相关产品推荐

