【问题标题】:Apache POI error loading XSSFWorkbook class加载 XSSFWorkbook 类的 Apache POI 错误
【发布时间】:2017-02-01 21:09:16
【问题描述】:

我正在尝试编写一个适用于 Excel 文档的程序,但 HSSF 格式对于我的要求来说太小了。我正在尝试迁移到 XSSF,但在尝试使用它时不断出错。

我通过在我的程序中添加 xmlbeans-2.3.0.jar 和 dom4j-1.6.jar 设法解决了前两个问题,但是现在出现了这个错误,似乎没有通过添加 Apache commons 来解决jar 可在 Apache 网站上找到。

错误如下:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
    at hot.memes.ExcelCreator.main(ExcelCreator.java:66)
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

【问题讨论】:

    标签: java apache-poi xssf


    【解决方案1】:

    XSSFWorkbook 类仅在 poi-ooxml 依赖项中可用。 请检查您使用的是 poi 还是 poi-ooxml。

    实现 'org.apache.poi:poi:5.0.0' -> HSSFWorkbook

    实现 'org.apache.poi:poi-ooxml:5.0.0' -> XSSFWorkbook

    【讨论】:

      【解决方案2】:

      你必须在你的项目类类路径中添加 jars -

      1. poi-3.17.jar
      2. poi-excelant-3.17.jar
      3. poi-ooxml-3.17.jar
      4. common-collections-4.4.jar
      5. xmlbeans-2.3.0.jar
      6. poi-ooxml-scehmas-3.17.jar
      7. common-compress.jar

      您的代码有以下示例。

      package com.sks.xssbook;
      
      import java.io.File;
      import java.io.FileOutputStream;
      
      import org.apache.poi.xssf.usermodel.XSSFSheet;
      import org.apache.poi.xssf.usermodel.XSSFWorkbook;
      
      /**
       * @author ssuman
       *
       */
      public class XssBook1 {
      
          /**
           * @param args
           */
          public static void main(String[] args) {
              try{
              XSSFWorkbook workBook = new XSSFWorkbook();
              XSSFSheet shhet = workBook.createSheet("sheet1");
              File f1 = new File("sks.xlsx");
              FileOutputStream fileOop = new FileOutputStream(f1);
              workBook.write(fileOop);
              workBook.close();
              System.out.println("File created !!!!!");
              }
              catch(Exception ex) {
                  System.err.println("Error ---- "+ex);
              }
      
          }
      
      }
      

      【讨论】:

        【解决方案3】:

        如果您已下载 pio-3.17 在eclipse上:右键单击项目文件夹->构建路径->配置构建路径->库->添加外部jar->从“lib”添加所有公共jar文件。它对我有用。

        【讨论】:

          【解决方案4】:

          万岁!将 commons-collections jar 文件添加到我的项目中解决了这个问题。向 Lucky Sharma 竖起两个大拇指。

          解决方案:在构建路径中添加 commons-collections4-4.1.jar 文件,然后重试。它会起作用的。

          您可以从https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.1下载它

          【讨论】:

            【解决方案5】:

            是的,通过将 commons-collections4-4.1 jar 文件添加到系统的 CLASSPATH 用户变量来解决异常。 下载自https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.1

            【讨论】:

              【解决方案6】:

              请注意,由于 ListValuedMap 是在 4.1 版中引入的,因此 4.0 还不够。

              对于 4.1 版本,您需要使用 this maven repository link。 为方便起见,复制如下

               <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
               <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-collections4</artifactId>
                 <version>4.1</version>
              </dependency>
              

              【讨论】:

              • 谢谢你!我正在使用 VSCode 并将其添加到 pom.xml 帮助:)
              【解决方案7】:

              commons-collections4-x.x.jar 确实解决了这个问题,但 Apache 已从 commons-Collections4-4.0.jar 中删除了接口 ListValuedMap,因此请使用更新的 4.1 版本,它具有所需的类和接口。

              如果您想使用 java 代码读取 Excel(2003 或 2007+),请参阅此处。

              http://www.codejava.net/coding/how-to-read-excel-files-in-java-using-apache-poi

              【讨论】:

              • 完全正确,必须下载这个版本。 mvnrepository.com/artifact/org.apache.commons/…
              • 这对我也很有帮助。我刚刚从 3.14 升级到 POI 3.15,并发现我的 XLSX 导出因此而损坏。所以我将版本从 4.0 更改为 4.1,一切正常。
              【解决方案8】:

              在您的构建路径中添加 commons-collections4-x.x.jar 文件并重试。 它会起作用的。

              您可以从https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.0下载它

              【讨论】:

              • 所有 Apache POI 依赖也包含在二进制下载包中!
              • 请参阅下面的 Anshu Kumar 的回答。 4.0 版本是不够的,你需要 Apache Collections 4.1 版本来解决这个问题。我已经检查过了。
              • Namaskar mitro,commons-collections4-x.x.jar 没有 ExtendedProperties.java,而 commons-collections3-x.x.jar 没有 LinkValuedMap.java。你是怎么克服的?
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-10-26
              • 2018-04-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多