如何在我的java项目中使用两个版本的jar

Gam*_*Boy 7 java conflict jar version classloader

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

但问题是我现在不会直接使用lucene的apis.有什么办法可以在neo4j的apis运行时加载lucene-3.6.2,并且可以在运行elasticsearch的apis时加载lucene-4.4.0.lucene的两个版本现在发生冲突,我需要在一个项目中运行neo4j和elasticsearch.我怎么能解决依赖问题?

提前致谢.

Vid*_*dya 1

您仍然可以使用类加载器解决方案,但这是一件很麻烦的事情,很容易出错。

您还可以使用不同的 JVM。

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

  • 验证 Neo4J 是否与 Lucene 4.x 发生冲突。也许你会很幸运,使用最新版本不会有任何问题。
  • 将它们分成两个应用程序,其中一个应用程序(例如 Neo4J)由另一个应用程序通过 Web 服务(很可能是 REST)调用进行访问。无论如何,Neo4J 有一个内置的REST API