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

标签 java jar version classloader conflict

在我的java项目中,我需要使用依赖lucene-3.6.2neo4j-1.9.3,以及ElasticSearch取决于 lucene-4.4.0。我知道如果我想直接使用两个版本的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 中断。也许你会很幸运,使用最新版本不会有任何问题。
  • 将它们分成两个应用程序,其中一个应用程序(比如 Neo4J)由另一个应用程序通过 Web 服务(很可能是 REST)调用访问。 Neo4J 有一个内置的 REST API无论如何。

关于java - 如何在我的java项目中使用两个版本的jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19395004/

相关文章:

java - 添加到列表抛出的前面?

java - WSDL 生成的 SOAPClient 无效 SOAP 1.1 消息

java - 我可以在 Appletviewer 中通过 Java Web Start 启动小程序吗?

android - 如何在 android ICS 上使用 'exec app_process' 启动 jar

Java从jar中加载文件

python - 属性错误: 'unicode' object has no attribute 'regex' while upgrading Django from 1. 7.11至1.9.2

java - 关注元素 Selenium

java - 我如何告诉 Gradle 包含一个本地库 jar,而该库 jar 又具有依赖项?

.net - 确定正在运行的应用程序中的 .net 框架版本

performance - 谷歌大查询 : retrieve last version of each row