0

在一些 XPages 应用程序中,我试图利用作为 Domino 的一部分安装的 org.apache.commons.lang 包。我将它添加到需要部分的 plugin.xml 中:

这允许我使用该包,并编译代码并成功运行它。我可以将设计刷新到测试数据库中,虽然我需要再次添加导入语句,因为设计刷新过程不会更新 plugin.xml,但这适用于我的开发服务器(8.5.2 FP3 并且适用于 8.5 .2 FP1 也)。

但是,当我尝试在不同的服务器上运行相同的代码时,它会因 org.apache.commons.lang 的 ClassDefNotFoundError 而失败。这在许多不同的 Domino 版本和多个数据库上都失败了。如果我清理数据库并重建它,代码编译得很好,但在运行时仍然会抛出错误。

我的开发服务器的安装在两个驱动器上进行了分区,但我不希望将导入添加到 plugin.xml 会在幕后某处存储文件路径。

我还尝试将 jar 导入我的数据库并将其作为引用库添加到构建路径,但再次得到 ClassDefNotFoundError。

任何关于原因或解决方案的想法都将被感激地接受。

4

2 回答 2

1

远非理想,但我在 WebContent\WEB-INF 下创建了一个名为 lib 的文件夹并将 jar 文件导入其中。此路径中的 lib 文件夹会自动包含在构建路径中,因此该文件夹中的任何内容都会自动变为可用。与其他人交谈后,这可能会被另一个 ClassLoader 加载,因此不会与服务器版本冲突。这并不理想,但我知道有几个人正在为这个和其他 Apache 库问题寻找更好的解决方案,所以希望很快就会出现。当有更好的解决方案可用时,我会添加评论。

于 2012-06-16T17:24:39.787 回答
0

我的建议是创建一个指定必要依赖项的空 XSP 库,然后将其设置为全局库(换句话说,您不必显式地将其设置为每个应用程序的依赖项)。这显然是矫枉过正,但它几乎肯定会奏效。

于 2012-02-21T18:59:08.717 回答