当前位置: 首页 > 知识库问答 >
问题:

写Excel文件时java.lang.NoClassDefFoundError错误

隗星驰
2023-03-14

我将开发一个工作流程,我需要从Oracle DB中获取一些数据并在Excel文件中写入ResultSet。在开始之前,我想做一些测试。但是,我得到了以下运行时异常java.lang.NoClassDefFoundError.详细信息可以在下面找到。我知道我错过了一些非常愚蠢的东西,但我正在努力寻找答案。我感谢你的帮助。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
    at DatabaseConnPkg.DatabaseConnClass.main(DatabaseConnClass.java:32)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more
C:\Users\Erfan\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)

这些是我正在使用的外部罐子

poi-4.1.2.jar

poi-ooxml-4.1.2.jar

这是我正在使用的代码

Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    ResultSetMetaData resultSetMetaData = null;

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","hr","hr");
        String sql = "select * from countries";
        preparedStatement = connection.prepareStatement(sql);
        resultSet = preparedStatement.executeQuery();
        resultSetMetaData = resultSet.getMetaData();
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet spreadSheet = workbook.createSheet();
        XSSFRow row = spreadSheet.createRow(1);
        XSSFCell cell;

        for(int i=0; i<resultSetMetaData.getColumnCount(); i++) {
            cell = row.createCell(i);
            cell.setCellValue(resultSetMetaData.getColumnName(i));
        }

        while(resultSet.next()) {
            row = spreadSheet.createRow(1);
            cell = row.createCell(1);
            cell.setCellValue(resultSet.getString(1));
            cell = row.createCell(2);
            cell.setCellValue(resultSet.getString(2));
            cell = row.createCell(3);
            cell.setCellValue(resultSet.getString(3));

        }

        FileOutputStream fileOutputStream = new FileOutputStream(new File(FILE));
        workbook.write(fileOutputStream);
        fileOutputStream.close();
        System.out.println("exceldatabase.xlsx written successfully");

        //System.out.println(resultSetMetaData.getColumnName(1) + "\t" + resultSetMetaData.getColumnName(2) + "\t" + resultSetMetaData.getColumnName(3));

        /*
        while(resultSet.next()) {
            System.out.println(resultSet.getString(1) + "\t\t" + resultSet.getString(2) + "\t\t" + resultSet.getString(3));
        }
        */

        connection.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

共有1个答案

孙承弼
2023-03-14

看起来你缺少了commons-collections4依赖项,你可以从这里获得它

 类似资料:
  • 问题内容: 有写Excel 2007+文件的Python模块吗? 我对编写长度超过65535行的文件感兴趣,只有Excel 2007+支持它。 问题答案: 您可以查看两个库。 Python-xlsx和 PyXLSX 编辑:正如评论所提到的,编写时请检查openpyxl

  • 问题内容: 我已经编辑了程序,现在它说setString() 对于LabelCell类型,未定义setString(String)方法。 我阅读了文档,在LabelCell类型中有一个setString方法。 问题答案: LabelCell只是具有一种方法的接口,即您可以在此处了解更多信息 您应该改用。 您应该做的确切如下: 您应该导入以下文件 然后下面是将所需位置的单元格添加到excel文件中的

  • 问题内容: 我想用3列N行从Java读写Excel文件,在每个单元格中打印一个字符串。谁能给我简单的代码片段吗?我是否需要使用任何外部库,或者Java是否内置支持? 我要执行以下操作: 问题答案: Apache POI可以为你做到这一点。特别是HSSF模块。该快速指南是最有用的。这是你想做什么的方法-专门创建一张纸并将其写出来。

  • 我是python的初学者,我有以下(令人尴尬的)问题: 我正在尝试使用 xlrd 导入 excel 文件,但我有“文件未找到错误”。 有人能帮助新手吗? 非常感谢,马特奥 -导入xlrd #加载数据文件路径=(r"C:\用户\MCECCHI\桌面\oil_exxon.xls") WB = xlrd . open _ workbook(path)sheet = WB . sheet _ by _ i

  • 我正在阅读一个用一些分隔符分隔的文本文件。 我的文本文件内容示例 Avc def efg JKSJD 1 2 3 5 3 4 6 0 每次调用createRow和createCell时是否都会创建新对象? 如果是,有什么替代方案?。如何以更好的性能将大数据写入excel?

  • 我正在尝试使用Apache POI编辑包含数据的excel文件。我编写了以下代码: 当我运行代码时,当我尝试打开Excel文件时,会出现以下错误:“我们发现‘file.xlsx’中的某些内容有问题。您希望我们尽可能多地恢复吗?如果您信任此工作簿的来源,请单击是。” 如果我单击是,Excel确实会使用我指定的值进行更新;但是,我不希望出现此错误。我如何解决这个问题?