📜  在模块 jetified-guava-24.1-jre (com.google.guava:guava:24.1-jre) 和 jetified-listenablefuture-1.0 (com.google.guava:listenablefuture) 中发现重复的类 com.google.common.util.concurrent.ListenableFuture :1.0) - Java (1)

📅  最后修改于: 2023-12-03 15:37:44.021000             🧑  作者: Mango

在模块 jetified-guava-24.1-jre (com.google.guava:guava:24.1-jre) 和 jetified-listenablefuture-1.0 (com.google.guava:listenablefuture) 中发现重复的类 com.google.common.util.concurrent.ListenableFuture :1.0) - Java

介绍

当你正在一个 Java 项目中使用 Maven 或 Gradle 等构建工具时,在添加一些依赖项时,你可能会遇到这个错误消息:

在模块 jetified-guava-24.1-jre (com.google.guava:guava:24.1-jre) 和 jetified-listenablefuture-1.0 (com.google.guava:listenablefuture) 中发现重复的类 com.google.common.util.concurrent.ListenableFuture :1.0) - Java 

这个错误消息出现的原因是因为你添加了两个相互冲突的依赖。这两个依赖都引入了同一个包中的同一个类,这就导致了冲突。

解决方案

要解决这个问题,你需要找出这两个依赖项中哪一个是引起冲突的。最好的方式是去查看这个类在哪个依赖中被引入。

一般情况下,当你在 Maven 或 Gradle 中添加依赖时,你可以指定依赖的版本号。这个版本号可以帮助你区分不同版本之间的冲突,例如:

compile 'com.google.guava:guava:20.0'
compile 'com.google.guava:listenablefuture:1.0'

在上面的例子中,我们添加了两个不同版本的 Guava 依赖。当编译项目时,编译器会发现同一个类在不同的版本之间存在冲突,并且会输出上面提到的错误消息。因此,我们需要指定同一个版本的 Guava 依赖,例如:

compile 'com.google.guava:guava:20.0'
compile 'com.google.guava:listenablefuture:20.0'

这个版本号必须是相同的,这样才能确保不同时存在相同的类加载到 JVM 中。如果您还无法解决这个问题,您可以使用 Maven 或 Gradle 的 dependency:tree 命令来查看依赖关系树。这将帮助您确定哪个依赖项引入了冲突的类。例如,对于 Maven,您可以使用以下命令:

mvn dependency:tree -Dverbose -Dincludes=com.google.common.util.concurrent.ListenableFuture
结论

在 Java 项目中,重复类的出现是很常见的问题,这是因为不同的依赖项之间可能引用同一个类。为了解决这个问题,您需要知道哪些依赖项引入了冲突的类,并移除其中一个依赖项。记得留意依赖项中的版本号,并确保它们是相同的。如果您还遇到其他问题,请查看您的代码,并确保您在使用正确的依赖版本。