在一些XPages应用程序中,我试图利用作为Domino一部分安装的org.apache.commons.lang包。我将它添加到plugin.xml的requires部分中:
这允许我使用这个包,编译代码并成功运行它。我可以将设计刷新到测试数据库上,尽管我需要再次添加导入语句,因为设计刷新过程不会更新plugin.xml,但这在我的开发服务器(8.5.2 FP3和8.5.2 FP1上也有效)上有效。
但是,当我尝试在不同的服务器上运行相同的代码时,它失败了,并显示org.apache.commons.lang的ClassDefNotFoundError。这在许多不同的Domino版本和多个数据库上都失败了。如果我清理数据库并重新构建它,代码编译得很好,但在运行时仍会抛出错误。
我的开发服务器的安装是跨两个驱动器进行分区的,但我不希望将导入文件添加到plugin.xml中会在幕后存储文件路径。
我还尝试将jar导入到我的数据库中,并将其作为引用库添加到构建路径中,但再次获得了ClassDefNotFoundError。
任何关于原因或解决方案的想法都将被感激地接受。
发布于 2012-06-16 17:24:40
并不理想,但我在WebContent\WEB-INF下创建了一个名为lib的文件夹,并将jar文件导入其中。此路径中的lib文件夹会自动包含在构建路径中,因此该文件夹中的任何内容都会自动变为可用。在与其他人交谈后,这可能会被另一个ClassLoader加载,因此不会与服务器版本冲突。这并不理想,但我知道有几个人正在研究一个更好的解决方案来解决这个问题和其他Apache库问题,所以希望很快就能实现。当有更好的解决方案时,我会添加评论。
发布于 2012-02-21 18:59:09
我的建议是创建一个指定必要依赖项的空XSP库,然后将其设置为一个全局库(换句话说,您不必将其显式设置为每个应用程序的依赖项)。这显然是夸大其词,但它几乎肯定会起作用。
https://stackoverflow.com/questions/9374792
复制相似问题