-2

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

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

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

java.lang.ClassNotFoundException。

4

1 回答 1

-1

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

  • 确保您作为依赖项添加的 guava 版本与您阅读文档时使用的 guava 版本相同。Funnels类是在11.0版中添加的(请参阅 javadoc 中的自部分),因此如果您依赖的版本早于该版本,则Funnels类将不存在。
  • 运行mvn dependency:tree命令以查看所有被吸入类路径的番石榴版本。如果您看到多个版本的 guava,请从 pom.xml 中依赖它的依赖项中排除 guava。
于 2018-02-05T03:28:10.647 回答