Java Apache POI error: XMLEventFactory Provider com.ctc.wstx



我收到运行时错误:

javax.xml.stream.XMLEventFactory: Provider com.ctc.wstx.stax.WstxEventFactory not found

使用 Apache POI 并尝试创建 XSSFWorkbook

我可以毫无问题地创建一个 HSSFWorkbook,但是当我将我的代码更改为:

Workbook workbook = new XSSFWorkbook();

它会导致运行时错误。任何想法可能出了什么问题?以下是我为 Apache POI 添加的 Maven 依赖项:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>ooxml-schemas</artifactId>
    <version>1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.15</version>
</dependency>

谢谢,@Francis @yoav! 有了您的提示,我能够通过将我的pom.xml依赖项重新定义为以下内容来修复错误:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.15</version>
</dependency>
<dependency>
    <groupId>com.ctc.wstx</groupId>
    <artifactId>woodstox-osgi</artifactId>
    <version>3.2.1.1</version>
</dependency>

再次感谢!

为我修复它的是具有以下依赖项:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
    <scope>provided</scope>
</dependency>
<!-- BE AWARE! It is absolutely crucial for wstx-asl to be bundled with plugin although it is present in Jira as well. -->
<!-- Jira version is not exported and it is a known bug: https://jira.atlassian.com/browse/JRASERVER-26214 -->
<!-- This artifact is supplemental for Apache POI library. -->
<dependency>
    <groupId>org.codehaus.woodstox</groupId>
    <artifactId>wstx-asl</artifactId>
    <version>3.2.4</version>
</dependency>

并在不同的上下文中运行XSSFWorkbook的创建:XSSFWorkbook

 xssfWorkbook;
try {
    xssfWorkbook = ContextClassLoaderSwitchingUtil.runInContext(WstxEventFactory.class.getClassLoader(), (Callable<XSSFWorkbook>) XSSFWorkbook::new);
} catch (Exception e) {
    throw new IllegalStateException("Cannot create XLSX workbook with WstxEventFactory class loader.");
}

相关内容

最新更新