使用 HSSFWorkbook 时出现 java.lang.ClassNotFoundException:org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream

lib*_*ero 12 java excel

我正在尝试实现从 .xls 文件读取。我有以下代码:

FileInputStream file = null;
    Workbook workbook = null;
    try {
        file = new FileInputStream(System.getProperty("user.home") + "/Downloads/" + fileName);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    if (fileName.endsWith(".xls")) {
        try {
            **workbook = new HSSFWorkbook(file);**
        } catch (IOException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

此标记的代码行崩溃。

我在pom.xml中导入:

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

但我收到错误: Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream

我将不胜感激对此的帮助。谢谢。

小智 11

这对我有用

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


小智 7

我最近将 Apache POI 升级到 5.2.3,并且遇到了相同的 ClassNotFoundException。由于应用程序在升级之前运行良好,所以我很快做了三件事来调试:

  1. 在 stackoverflow.com 上搜索;-)
  2. 检查 Apache Commons IO 的哪个版本具有 org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream 类。在 JavaDoc 中,是从 2.7 开始的。
  3. 检查我的 Maven 依赖关系树以了解我正在使用的 Apache Commons IO 版本。结果我的 commons-io 是 2.2,它来自我的 maven pom.xml 中的 commons-fileupload 1.4

当我将最新的可用 Apache Commons IO 2.11.0 添加到我的 maven pom.xml 并重建应用程序后,问题就解决了。我希望这有帮助!

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Sau*_*ala 6

添加

<dependency>
    <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    <version>1.4</version>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

给你pom

  • 通过指定较新版本的 commons-io 修复了错误 (3认同)