簡體   English   中英

java.lang.ClassNotFoundException: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream 關於使用 HSSFWorkbook

[英]java.lang.ClassNotFoundException: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream on using HSSFWorkbook

我正在嘗試實現從 .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();
        }

此標記的代碼行崩潰。

我在 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>

但我得到了錯誤:引起:java.lang.ClassNotFoundException:org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream

我將不勝感激。 謝謝。

添加

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

給你pom

將依賴項更改為

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
</dependency>

我也使用了 5.2.0 版本,並且遇到了同樣的錯誤並進行了更改以修復它。

When I read excel to XSSFWorkbook, it prompt error message that "commons.io.output.UnsynchronizedByteArrayOutputStream" finally fixed it by downgrad the version of poi from 5.2.3 to 5.2.2

它對我有用

    <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>

它通過消除這種依賴對我有用

 <dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.4</version>
</dependency>

我最近將 Apache POI 升級到 5.2.3 並且遇到了相同的 ClassNotFoundException。 由於應用程序在升級前運行良好,所以我很快做了三件事來調試:

  1. 在 stackoverflow.com 上搜索;-)
  2. 檢查從哪個版本的 Apache Commons IO 有 org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream class.在 Java2Doc.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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM