我正在创建一个 Web 应用程序项目,该项目具有上传 Excel 文件的功能,然后该 Excel 文件中的数据将保存到数据库(MySQL)中。在后端(Java)解析Excel文件时,使用了Apache POI JAR文件。我已将 JAR 文件放在我的
WEB-INF/lib
文件夹中,它们是:
由于
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 文件的哪些版本彼此兼容。
自 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
),升级将会自动发生。