读取Excel遇NoClassDefFoundError:找不到UnsynchronizedByteArrayOutputStream
解决java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream问题
核心问题:版本不匹配
UnsynchronizedByteArrayOutputStream是commons-io 2.8.0才新增的类,你当前使用的commons-io 2.7版本不包含这个类,而poi 5.2.2依赖的commons-io版本要求是2.11.0及以上。- poi-ooxml-schemas 4.1.2与poi 5.2.2版本冲突,poi 5.x系列不需要单独引入poi-ooxml-schemas,poi-ooxml依赖已经包含了对应版本的schemas组件。
修正后的pom.xml依赖配置
<dependencies> <!-- Apache POI 核心及OOXML依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency> <!-- 升级commons-io到兼容版本 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> </dependencies>
- 项目重建与依赖验证
- 执行
mvn clean install清理旧依赖缓存,重新下载正确版本的依赖包。 - 用
mvn dependency:tree查看依赖树,确认commons-io版本为2.11.0,且没有被其他依赖降级。如果存在降级情况,在对应依赖中添加exclusions排除低版本commons-io:
- 执行
<dependency> <!-- 示例:排除其他依赖引入的低版本commons-io --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </exclusion> </exclusions> </dependency>
内容的提问来源于stack exchange,提问作者monisha wali
相关产品推荐
相关产品推荐

