7

在我的 java 项目中,我需要使用依赖于lucene-3.6.2 的neo4j -1.9.3和 依赖于lucene-4.4.0 的ElasticSearch 。我知道如果我想直接使用两个版本的 lucene,我可以使用 ClassLoader 从 lucenes 中加载不同的类。

但问题是我现在不会直接使用lucene的api。有什么办法可以在neo4j的api运行时加载lucene-3.6.2,而在运行elasticsearch的api时可以加载lucene-4.4.0。现在lucene的两个版本冲突了,我需要在一个项目中运行neo4j和elasticsearch。我该如何解决依赖问题?

提前致谢。

4

2 回答 2

1

OSGi 可以解决这个问题。OSGi 包只不过是一个带有附加元数据详细版本的 jar。一个包有一个版本号,并且会详细说明依赖 jar 的版本号(或范围)。

于 2014-06-19T19:35:54.553 回答
1

您仍然可以使用 ClassLoader 解决方案,但这是一个很容易出错的讨厌的业务。

您还可以使用不同的 JVM。

但我个人选择的解决方案是以下之一(或两者):

  • 验证 Neo4J 是否与 Lucene 4.x 中断。也许你会很幸运,使用最新版本不会有任何问题。
  • 将它们分成两个应用程序,其中一个应用程序(例如 Neo4J)由另一个应用程序通过 Web 服务(很可能是 REST)调用进行访问。Neo4J 有一个内置的REST API
于 2013-10-16T04:21:48.267 回答