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

IntelliJ导入Apache POI运行报NoClassDefFoundError如何解决

问题原因
  • 编译阶段IDE仅校验代码中直接引用的POI核心API类是否存在,因此不会触发报错
  • 你代码中使用的XSSFWorkbook、XSSFSheet等属于处理.xlsx格式的OOXML规范工具类,这部分功能依赖xmlbeans等POI的间接依赖包。你仅导入了POI核心jar包,未将这部分间接依赖加入运行时类路径,就会触发找不到类的异常

异常信息中提示缺失的org.apache.xmlbeans.XmlObject就是xmlbeans依赖包中的核心类

你的代码逻辑本身不存在错误,补全缺失的依赖后即可正常执行。

解决方案

方案1:使用Maven/Gradle构建工具(推荐)

构建工具会自动拉取POI对应的所有间接依赖,无需手动处理依赖缺失问题。
以常用的POI 5.2.5版本为例:
如果使用Maven,在pom.xml的dependencies节点中添加如下配置:

<!-- 处理.xls格式的核心依赖 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.5</version>
</dependency>
<!-- 处理.xlsx格式的依赖 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>

如果使用Gradle,在build.gradle的dependencies代码块中添加如下配置:

implementation 'org.apache.poi:poi:5.2.5'
implementation 'org.apache.poi:poi-ooxml:5.2.5'

刷新依赖后重新运行项目即可。

方案2:手动导入所有依赖包

如果选择手动导入jar包,需要将POI官方发布包中以下目录的所有jar包都加入项目的依赖范围:

  • 根目录下的poi、poi-ooxml相关核心jar包
  • ooxml-lib目录下的所有jar包(xmlbeans依赖就放在这个目录下)
  • lib目录下的所有公共依赖jar包
    导入完成后需要在IDEA的项目结构设置中,确认所有导入的jar包都被勾选为「运行时可用」,之后重新运行项目即可。

内容的提问来源于stack exchange,提问作者Matteo Pagliarello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:54:02