番石榴:同一个包装中的两个班级,一个工作,一个获得ClassNotFound'错误

时间:2018-01-10 20:33:07

标签: java maven packages guava codenvy

我在Guava中使用Bloom过滤器和漏斗类。我没有单独添加JAR,而是使用Maven添加了对Guava的依赖。

当我最初使用Bloom过滤器类时,它没有任何问题。但是当我开始使用Funnel类时(在具有相同依赖部分,类路径等的同一文件中)我得到了错误

  

java.lang.NoClassDefFoundError:com / google / common / hash / Funnels

  

抛出java.lang.ClassNotFoundException。

1 个答案:

答案 0 :(得分:-1)

Guava是一个人们通常遇到问题的库,因为它经常会破坏向后兼容性。此外,许多项目都将其作为传递依赖项,因此您可能会陷入类路径中具有多个版本的番石榴的情况。请尝试以下方法:

  • 确保您作为依赖项添加的番石榴版本与您阅读文档的番石榴版本相同。 漏斗类已在版本 11.0 see the Since section in the javadoc)中添加,因此,如果您的版本低于漏斗的版本上课不存在。
  • 运行mvn dependency:tree命令以查看被吸入类路径的所有guava版本。如果您看到多个版本的guava,请从您的pom中依赖它的依赖项中排除guava。