You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

初始化XSSFWorkbook时报java.lang.NoSuchFieldError: Factory错误如何解决

问题根因
  • 核心为依赖版本不兼容:Apache POI 5.x 版本已废弃旧版ooxml-schemas 1.x系列依赖,你引入的ooxml-schemas-1.3是 POI 3.x/4.x 版本的配套组件,和 POI 5.1.0 依赖的 XmlBeans 5.x 体系完全不兼容,会导致CT类的Factory初始化时出现类加载冲突、方法缺失类异常,这就是你执行(CTWorkbook)CTWorkbook.Factory.newInstance();时报错、XSSFWorkbook初始化卡住的直接原因。
  • 次要排查点:你当前引入的xmlbeans-5.0.2与POI 5.1.0版本匹配,无需调整,只需确认项目中没有其他低版本XmlBeans被间接引入即可。
解决方案
  1. 完全移除项目中的ooxml-schemas-1.3依赖
  2. 引入POI 5.1.0配套的OOXML Schema依赖,根据使用场景二选一:
    • 常规Excel导入导出场景选择轻量版:poi-ooxml-lite-5.1.0,已包含Excel操作所需的所有核心CT类,体积更小加载速度更快
    • 需要操作Office高级特性(如自定义扩展样式、VBA读写等)时选择全量版:poi-ooxml-full-5.1.0
  3. 清理项目依赖缓存后重新编译运行即可恢复正常。

如果使用Maven管理依赖,建议引入POI官方的BOM统一管理所有POI相关组件版本,避免零散引入导致的版本不一致问题:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-bom</artifactId>
      <version>5.1.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

后续引入poi、poi-ooxml、poi-ooxml-lite等依赖时无需再指定版本号,会自动与BOM版本保持一致。


内容的提问来源于stack exchange,提问作者Stefan Juganaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:15:04