Jms 笨拙的guiceyfruit对旧版本guice的可传递依赖

Jms 笨拙的guiceyfruit对旧版本guice的可传递依赖,jms,guice,guava,dependency-management,Jms,Guice,Guava,Dependency Management,我正在编写一个基于Camel的JMS应用程序,使用guice3.0将所有内容连接起来。不幸的是,CamelModule依赖于guiceyfruit,它的当前版本对guice2.0具有可传递的依赖性 在guice 2.0和3.0之间,删除了一些不推荐使用的类,特别是com.google.inject.internal.set/Lists/Maps 排除guice 2.0上的可传递依赖项,并独占使用guice 3.0,由于删除了类,因此不起作用;运行时将出现ClassNotFoundExceptio

我正在编写一个基于Camel的JMS应用程序,使用guice3.0将所有内容连接起来。不幸的是,CamelModule依赖于guiceyfruit,它的当前版本对guice2.0具有可传递的依赖性

在guice 2.0和3.0之间,删除了一些不推荐使用的类,特别是com.google.inject.internal.set/Lists/Maps

排除guice 2.0上的可传递依赖项,并独占使用guice 3.0,由于删除了类,因此不起作用;运行时将出现ClassNotFoundExceptions

我的解决方案是在我自己的项目中实现三个类,并从guiceyfruit需要的每个类中实现单个方法(newArrayList、newHashSet、newHashMap)。这些只是将这些方法委托给google guava实现

我不再得到ClassNotFound异常,但我忍不住觉得有一种更有效的方法来实现这一点


处理这种情况的最佳方法是什么?

看起来guiceyfruit自2009年以来一直没有改变,尽管有一些与您报告的类似的bug(请参阅)。我会尝试删除对guiceyfruitGuiceyfruit是开源的依赖。也许您可以获取源代码,看看将其依赖项迁移到Guice 3.0有多容易?除非我认为你的解决方案很好,特别是在努力方面。谢谢你的评论,我将继续我目前的解决方案@NamshubWriter我不知道如何删除依赖关系,除了编写自己的camel-guice集成之外,我没有时间和专门知识。出于兴趣,我考虑过它,但几天后,我可能会从兔子洞出来,只显示一个guice模块:类似这样的问题是已知的,骆驼2.11中应该有一个解决方案: