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

2020年7月17日 30点热度 0条评论

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

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

提前致谢。

解决方案如下:

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

您还可以使用其他JVM。

但是我个人选择的解决方案是以下一项或两项:

  • 验证Neo4J是否与Lucene 4.x兼容。也许您会很幸运,并且使用最新版本不会有任何问题。
  • 将它们拆分为两个应用程序,其中另一个应用程序通过Web服务(最可能是REST)调用访问其中一个(例如Neo4J)。无论如何,Neo4J具有内置的REST API