不在 IDE 中时出现 Apache POI 错误

Apache POI error when not in IDE

我们正在使用 Apache POI 创建一个非常简单的电子表格。一切都在开发环境中工作。发布时,项目作为可运行的 JAR 导出;这个 jar 和所有需要的库都放在中央服务器上。各种 PC 都引用这些相同的文件。

在大多数 PC(Linux 和 Win7)上,一切正常。然而,在少数 Win7 机器上,我们收到错误:

DOMSource cannot be processed: check that saxon9-dom.jar is on the classpath.

我试过adding the -D option as suggested here,没用。无论如何,目前还不清楚为什么依赖关系应该只在某些机器上中断。加载库的顺序会有所不同吗?

我也试过将所有依赖项提取到导出的 jar 文件中。这个(非常胖!)jar 文件在完全相同的机器上工作 - 或不工作。

我很茫然:什么会导致 Apache POI 在某些机器上以这种方式失败?

事实证明这是旧版 LibreOffice 的问题(具体来说,受影响的系统仍然是 运行 3.6 版)。更新到 LibreOffice 5.0 解决了这个问题。

确切地 how/why LibreOffice 影响了 Apache POI 中的 XML 处理尚不清楚。反正现在已经不重要了