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

使用Apache POI读写Excel文件遇NoClassDefFoundError错误求指导

解决Apache POI报错java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap

这个报错是非常典型的依赖缺失问题——你的项目里缺少了Apache Commons Collections 4这个核心依赖库。Apache POI的XSSF组件(用于处理.xlsx格式的Excel文件)内部依赖这个库中的ListValuedMap类,当JVM在运行时找不到这个类时,就会抛出这个错误。

下面分两种场景给你解决方法:

场景1:用Maven管理项目

直接在你的pom.xml中添加以下依赖配置,Maven会自动帮你下载并引入对应的Jar包:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version> <!-- 可以替换为最新的稳定版本,比如4.5.0 -->
</dependency>

场景2:手动导入Jar包

  • 下载Apache Commons Collections 4的Jar包(选择稳定版本即可)
  • 将下载好的commons-collections4-x.x.jar添加到你的项目类路径中,和你已经导入的POI相关Jar包放在同一目录下
  • 确保IDE已经识别到这个Jar包(如果用Eclipse/IDEA,需要添加到项目的构建路径里)

额外提醒:POI 4.x及以上版本都需要依赖commons-collections4,如果你用的是较旧的POI 3.x版本,可能需要commons-collections3,但从你使用XSSF的代码来看,应该是用的较新版本的POI,所以优先选择commons-collections4即可。

你的代码逻辑本身没有问题,附上你的代码供参考:

package excelExport;
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadWriteExcel1 {
 public static void main (String []args) throws Exception {
 File src=new File("C:\\Users\\techbrain\\Downloads\\Selenium Jar\\TestData.xlsx");
 FileInputStream fis = new FileInputStream(src);
 XSSFWorkbook wb=new XSSFWorkbook(fis);
 XSSFSheet sheet=wb.getSheetAt(0);
 int rowcount=sheet.getLastRowNum()+1;
 System.out.println("Total rows is "+rowcount);
 for(int i=0; i<rowcount; i++) {
 String data0=sheet.getRow(i).getCell(0).getStringCellValue();
 System.out.println("Data from Row"+i+" is "+data0);
 }
 wb.close();
 }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:22:32