Apache POI JAR 文件兼容性问题

问题描述 投票:0回答:1

我正在创建一个 Web 应用程序项目,该项目具有上传 Excel 文件的功能,然后该 Excel 文件中的数据将保存到数据库(MySQL)中。在后端(Java)解析Excel文件时,使用了Apache POI JAR文件。我已将 JAR 文件放在我的

WEB-INF/lib
文件夹中,它们是:

  • poi-5.2.5
  • poi-ooxml-5.2.5
  • poi-ooxml-schemas-4.1.2

由于

poi-ooxml-schemas-4.1.2
和其他两个 JAR 文件之间的版本冲突,我在控制台上收到错误:

Jan 16, 2024 1:57:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [UploadServlet] in context with path [/Teachersdairy] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoSuchFieldError: Factory

我找不到比这个更新的

poi-ooxml-schemas-4.1.2
版本。如果还有另一个支持 POI 5.2.5 版本的
poi-ooxml-schemas
JAR 文件,请告诉我或者任何其他支持
poi
版本的
poi-ooxml
poi-ooxml-schemas-4.1.2

我试图找到最新版本的

poi-ooxml-schemas-4.1.2
。现在我想知道这三个 JAR 文件的哪些版本彼此兼容。

java apache-poi
1个回答
0
投票

自 Apache POI 5.0.0 起,

poi-ooxml-schemas
依赖项已替换为
poi-ooxml-lite
poi-ooxml-full
。请参阅版本 5.0.0 的变更日志

将 poi-/ooxml-schemas 的工件名称更改为 poi-ooxml-lite/full

换句话说,将

poi-ooxml-schemas
替换为
poi-ooxml-lite
(或者如果您需要额外的功能,
poi-ooxml-full
)。

正如我在评论中所说,部分情况可以通过使用 Maven 或 Gradle 来管理依赖项来避免,因为

poi-ooxml
4.1.2 和较旧的 Maven 依赖项会自动引入
poi-ooxml-schemas
,并且从 5.0.0 开始它拉进来
poi-ooxml-lite
。因此,如果您使用 Maven 或 Gradle 来管理依赖项(并且没有明确依赖
poi-ooxml-schemas
),升级将会自动发生。

© www.soinside.com 2019 - 2024. All rights reserved.