在web环境中XSSFWorkbook报错NoClassDefFoundError

一背景介绍

java web环境需要读取excel表格中的数据,插入到数据库中,需要用到XSSFWorkbook类读表格文件,关键代码如下:

  //读取excel
    public static Workbook readExcel(String filePath) {
        Workbook wb = null;
        if (filePath == null) {
            return null;
        }
        String extString = filePath.substring(filePath.lastIndexOf("."));
        InputStream is = null;
        try {
            is = new FileInputStream(filePath);
            if (".xls".equals(extString)) {
                return wb = new HSSFWorkbook(is);
            } else if (".xlsx".equals(extString)) {
                return wb = new XSSFWorkbook(is);
            } else {
                return wb = null;
            }

        } catch (FileNotFoundException e) {
            LOGGER.error(e.toString());
        } catch (IOException e) {
            LOGGER.error(e.toString());
        } 
        return wb;
    }

二 问题发生

在本地运行,如写个main方法跑或者用@test跑是能正常运行,但是到web上,打断点发现不能找到这个类
于是尝试升级依赖包
在web环境中XSSFWorkbook报错NoClassDefFoundError_第1张图片
还是不行。不能解决掉,陷入了深深的思考中。对于环境问题和依赖问题,处理起来是真的难受。
尝试了其他作者给的推荐依赖和版本,还是不行:
第一个:
在web环境中XSSFWorkbook报错NoClassDefFoundError_第2张图片
第二个:
在web环境中XSSFWorkbook报错NoClassDefFoundError_第3张图片

三 问题解决

绕过问题,山不过来我过去。
改变文件格式:即xlsx为xls,最终回到了HSSFWorkbook类读取。

PATH = "/Users/xxx/work/B/A_info.xlsx";

PATH = "/Users/xxx/work/B/A_info.xls";

这样在web层就能访问了。
(ps:需要注意的是,如果你直接把.xlsx格式文件变为.xls是不行的,需要先打开文件,点击另存为.xls格式才行,这里不能偷懒,笔者也踩过这个坑)

你可能感兴趣的:(JavaWeb,后端,软件解决方案,NoClassDefFound,XSSFWorkbook报错,web环境XSSFWork报错)