我在番石榴中使用布隆过滤器和漏斗类。我没有单独添加 JAR,而是使用 Maven 添加了对 Guava 的依赖项。
当我最初使用 Bloom 过滤器类时,它没有问题。但是当我开始使用 Funnel 类(在具有相同依赖项部分、类路径等的同一文件中)时,我得到了错误
java.lang.NoClassDefFoundError: com/google/common/hash/Funnels
和
java.lang.ClassNotFoundException。
Guava 是一个人们通常会遇到问题的库,因为它经常破坏向后兼容性。许多项目也将其作为传递依赖项包含在内,因此您可能会陷入类路径上有多个版本的番石榴的情况。尝试以下操作:
mvn dependency:tree
命令以查看所有被吸入类路径的番石榴版本。如果您看到多个版本的 guava,请从 pom.xml 中依赖它的依赖项中排除 guava。