使用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
相关产品推荐
相关产品推荐

