0

运行创建 XSSFWorkbook 的项目/代码时,系统失败,org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFileRecoveryPr 未找到类定义错误

我也有所有 poi 3.9 jar 和它的先决条件 jar。

有趣的是,相同的项目/代码在我朋友的系统上运行良好。

该项目是一个建立在 RAD 上的 JSF 1.2 项目。

会不会和我系统上的 MS office 安装套件有关?另外为什么在工作簿创建期间调用该类,在任何地方都找不到任何文档。

请帮助解决问题,因为我无法继续进行项目测试。

4

1 回答 1

0

Apache POI FAQ 条目中“我正在使用 poi-ooxml-schemas jar,但我的代码因“java.lang.NoClassDefFoundError: org/openxmlformats/schemas/ something而失败:

要使用新的 OOXML 文件格式,POI 需要一个包含由 XMLBeans 编译的文件格式 XSD 的 jar。这些 XSD 一旦编译成 Java 类,就存在于 org.openxmlformats.schemas 命名空间中。

如组件概述部分所述,有两个可用的 jar 文件。所有模式的完整 jar 是 ooxml-schemas-1.1.jar,目前大约 15mb。较小的 poi-ooxml-schemas jar 只有大约 4mb。后一个 jar 文件只包含常用的部分。

许多用户选择使用较小的 poi-ooxml-schemas jar 来节省空间。但是,poi-ooxml-schemas jar 仅包含通常使用的 XSD 和类,如单元测试所标识的。每隔一段时间,您可能会尝试使用未包含在最小 poi-ooxml-schemas jar 中的部分文件格式。在这种情况下,您应该切换到完整的 ooxml-schemas-1.1.jar。从长远来看,您可能还希望提交一个使用 XSD 额外部分的新单元测试,以便将来的 poi-ooxml-schemas jar 包含它们。

因此,短期内,您只需从poi-ooxml-schemasjar 切换到更大(且完整)的ooxml-schemasjar。从长远来看,您需要向使用所需 CT 类的 Apache POI 项目提交 junit 测试,然后该类将poi-ooxml-schemas在未来版本中自动包含在较小的 jar 中。

于 2014-04-02T22:53:58.940 回答