【发布时间】:2014-03-24 01:36:59
【问题描述】:
在我的网络应用程序中,已经有一个 3.6.2 版本的 lucene-core jar,现在要在同一个项目中添加不同的功能,我需要最新版本的 lucene-core jar,即 4.4.0。
当我用以前的 jar 替换最新的 jar 时,它会引发编译错误,因为 Lucene 不维护向后兼容性。
我新添加的功能不适用于 3.6.2 版本。我知道不可能将两个 jar 版本都保存在 lib 中。请提出解决方案。
【问题讨论】:
在我的网络应用程序中,已经有一个 3.6.2 版本的 lucene-core jar,现在要在同一个项目中添加不同的功能,我需要最新版本的 lucene-core jar,即 4.4.0。
当我用以前的 jar 替换最新的 jar 时,它会引发编译错误,因为 Lucene 不维护向后兼容性。
我新添加的功能不适用于 3.6.2 版本。我知道不可能将两个 jar 版本都保存在 lib 中。请提出解决方案。
【问题讨论】:
哦,是的罐子地狱!
如果可能,将您的 Lucene 功能移至单独的层,例如 Web 服务,并从您的 Web 应用程序作为 Web 服务客户端访问此服务。当然,这意味着某种开销(网络等)。
另一种可能性是使用 OSGI 解决方案,例如 JBoss Fuse,它允许为 Web 应用程序提供服务。将您的 Lucene 功能移动到单独的模块(每个模块使用不同的 Lucene 版本)并将服务导入您的 Web 应用程序。优点是使用此解决方案您可以直接访问服务而无需网络开销。
【讨论】: