由于 5.2.3 中的安全违规威胁,我已从 org.apache.poi-poi-ooxml-5.2.3 升级到 org.apache.poi-poi-ooxml-5.2.4
现在我面临运行时异常 java.lang.NoSuchMethodError
例外:
[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]
代码:
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.
}
...
}
查看版本更改,似乎是次要升级,但现在现有代码停止工作。 可能出了什么问题?
您需要添加
Apache Common IO version >=2.7.x
。
阅读文档此处。该类在 2.7.x 版本中引入了
在pom.xml中添加commons-io的最新依赖:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.14.0</version>
</dependency>
看看这是否有效。