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