首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java解决传递依赖冲突

用Java解决传递依赖冲突
EN

Stack Overflow用户
提问于 2015-06-10 22:05:52
回答 2查看 778关注 0票数 6

我正在尝试构建一个与Dropwizard (泽西岛) REST端点进行通信的HBase。虽然这是我仅有的两个顶级依赖项,但这两个依赖项都加载了许多冲突的传递依赖项。谷歌的番石榴就是这种冲突的一个简单例子:

  • HBase客户端指定版本11。
  • Dropwizard指定18

Dropwizard将不使用version 11,而HBase将不使用version 18。

我已经检查了Maven shade插件文档,但它似乎不允许您重新定位依赖jars中的类。因此,我不知道如何解决这个问题,除非将这两个组件分离成单独的JVM。

EN

回答 2

Stack Overflow用户

发布于 2015-06-18 20:59:42

这是个肮脏的解决方案。但你可以..。

创建一个项目/模块,您可以在其中定义一组服务接口,您的下拉向导应用程序将使用这些接口与HBase对话。

创建另一个实现这些接口并使用HBase类的模块/项目。遮住这个项目。

在Dropwizard项目中,只包含接口jar,但是创建一个任务将阴影工件复制到资源中。

为您的阴影JARClassLoader客户端工件创建一个HBase。您可能必须创建一个特殊的子类,该子类在默认情况下不委托父类,类加载器将请求父类解析链接,并可能从外部类加载器中提取较新版本的番石榴。

请求Jar加载程序提供服务合同的实例.

Businessing api = Class.forName("com.awesome.Businessing", true, jarLoader).newInstance();

票数 1
EN

Stack Overflow用户

发布于 2015-06-19 05:41:01

尝试在您的<dependencyManagement/>部分pom.xml中为这些依赖项指定具体版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30768120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档