Java17+SpringBoot2.7.9兼容的Excel相关依赖版本咨询
适配Java 17与Spring Boot 2.7.9的Excel依赖版本解决方案
你的报错根源在于Apache POI 3.10.1版本过于老旧,无法兼容Java 17环境——该版本依赖的xmlbeans库中XmlOptions.put(Object)方法签名已在后续版本变更,导致反射调用失败。同时jxl 2.6是停止维护多年的库,同样存在Java 17兼容性问题。
推荐依赖配置
方案1:移除jxl,用Apache POI统一处理Excel(优先推荐)
jxl仅支持xls格式且已停止维护,Apache POI同时支持xls和xlsx,且完全兼容Java 17。结合Spring Boot 2.7.9的依赖管理,可使用以下配置:
方式A:使用Spring Boot默认管理的POI版本(4.1.2,兼容Java8+)
<!-- 处理xls格式 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> </dependency> <!-- 处理xlsx格式 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> </dependency>
方式B:升级到更适配Java17的POI 5.x版本
若需要更完善的Java17支持,可覆盖Spring Boot的版本管理,使用POI 5.2.5(稳定版):
<properties> <poi.version>5.2.5</poi.version> </properties> <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> </dependency> </dependencies>
方案2:保留jxl(不推荐)
jxl无官方Java17兼容版本,可尝试第三方维护的分支版本,但仍有兼容性风险:
<dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.12</version> </dependency>
关键注意事项
- 所有POI相关依赖版本必须保持一致,避免版本冲突。
- 移除原POI依赖中的
xml-apis排除配置,新版POI与Java17的XML API原生兼容,无需排除。 - 测试时覆盖xls和xlsx两种格式,确保导出功能正常。
内容的提问来源于stack exchange,提问作者Rohith P
相关产品推荐
相关产品推荐

