首页 > 解决方案 > 尝试使用提供的代码读取 Excel 文件时出现 Class Not Found 错误

问题描述

尝试读取 Excel 文件时出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
    at 
Caused by: java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

我已使用以下代码读取扩展名为 .xls 的 Excel 文件。我曾尝试通过导入其他 poi jar 来搜索答案,但它没有帮助,我已经检查过搜索网络,但它再次没有帮助。

public Object[][] getExcelData(String excelLocation, String sheetName) {
        try {
            Object dataSets[][] = null;
            FileInputStream file = new FileInputStream(new File(excelLocation));
HSSFWorkbook workbook = new HSSFWorkbook(excelLocation);
HSSFSheet sheet = workbook.getSheet(sheetName);
int totalRowNum = sheet.getLastRowNum();
int totalColumnNum = sheet.getRow(0).getLastCellNum();
dataSets = new Object[totalRowNum][totalColumnNum];
Iterator<Row> rowIterator = sheet.iterator();
            int i = 0;
while (rowIterator.hasNext()) {
                i++;
HSSFRow row = (HSSFRow) rowIterator.next();
                Iterator<Cell> cellIterator = row.cellIterator();
                int j = 0;
                while (cellIterator.hasNext()) {
                    j++;
                    HSSFCell cell = (HSSFCell) cellIterator.next();
                    switch (cell.getCellTypeEnum()) {
                    case STRING:
                    dataSets[i][j] = cell.getStringCellValue();
                        break;
                    case NUMERIC:
                        dataSets[i][j] = cell.getNumericCellValue();
                        break;
                    case BOOLEAN:
                        dataSets[i][j] = cell.getBooleanCellValue();
                        break;
                    case FORMULA:
                        dataSets[i][j] = cell.getCellFormula();
                        break;
                        default:
                        log.info("No matching ENUM Type Found");
                        break;
                   }
                }
            }
          return dataSets;
        } catch (Exception e) {
            log.info(e.getCause());
            e.printStackTrace();
        }
        return null;
    }
public static void main(String[] args) {

        ExcelHelper excel = new ExcelHelper();
        String excelLocation = ResourceHelper.getResourcePath("\\src\\main\\resources\\testData\\testData.xls");
        Object[][] data = excel.getExcelData(excelLocation, "Login");

    }
}

标签: javaapache-poi

解决方案


从您的用户位置删除 .m2 -> 执行 Maven 强制更新 -> 运行


推荐阅读