我已经从org.apache.poi-poi-ooxml-5.2.3升级到org.apache.poi-poi-ooxml-5.2.4了,因为我在5.2.3升级到Security Violation Threat

现在,我面临着作为java.lang.NoSuchMethodError的运行时异常

Exception:

[ERROR] ErrorPageFilter - Forwarding to error page from request [/reports/myapp/myreport] due to exception ['org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream$Builder org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream.builder()']
java.lang.NoSuchMethodError: 'org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream$Builder org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream.builder()'
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.newPackage(XSSFWorkbook.java:521) ~[poi-ooxml-5.2.4.jar:5.2.4]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:231) ~[poi-ooxml-5.2.4.jar:5.2.4]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:227) ~[poi-ooxml-5.2.4.jar:5.2.4]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:215) ~[poi-ooxml-5.2.4.jar:5.2.4]
    at myapp.reports.service.impl.MyReportsExcelExporter.<init>(MyReportsExcelExporter.java:37) ~[classes/:0.0.1-SNAPSHOT]

Code:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class MyReportsExcelExporter {
    protected XSSFWorkbook workbook;
    ...
    public MyReportsExcelExporter() {
        this.workbook = new XSSFWorkbook(); //Facing issue here, while initializing the workbook.
    }
    ...
}

看看版本的变化,它看起来像是一个小升级,但现在现有的代码已经停止工作.

可能出了什么问题?

推荐答案

您需要将ApacheCommons IO依赖项添加/升级到version >=2.12.x.

UnsynchronizedByteArrayOutputStream中的builder()方法被引入到2.12.x版Commons-io中.

将任何Commons-io版本>=2.12.0用于任何ApachePOI版本>=5.2.4.

我拿到了最新的依赖于Commons-io的是2.14.0.

pom.xml(Maven):

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

build.gradle(Gradle):

dependencies {
   implementation 'commons-io:commons-io:2.14.0'
}

看起来不错.

Java相关问答推荐

Java字符串常数池困惑

如何在SystemiccationRetryListenerSupport中获得类级别的spring retryable annotation中指定的标签?

SQlite for Android无法使用json_group_array/json_object

如果一个子类没有构造函数,超类也没有构造函数,那么为什么我可以构造子类的实例呢?

Java .类参数不通过构造函数传递

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

Kotlin Val是否提供了与Java最终版相同的可见性保证?

有效的公式或值列表必须少于或等于255个字符

Java页面筛选器问题

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

泛型与泛型问题的完美解决方案?

我的代码是线程安全的吗?[Java、CAS、转账]

Java KeyListener不工作或被添加

获取所有可以处理Invent.ACTION_MEDIA_BUTTON Android 13 API33的Android包

在具有Quarkus Panache的PostgreSQL中将JSON数据存储为JSONB时,会将其存储为转义字符串

如何在Spring Security中设置一个任何人都可以打开的主页?

没有Google Play服务,Firebase Auth无法工作

Java方法参数:括号中的类型声明?

URI构造函数错误?

窗口启动后不久,从java.awt.Graphics disapear创建的矩形