NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor

问题描述 投票:0回答:1

我有一个可以很好地构建和执行的项目(main)。

我有另一个项目(envelope),它依赖于main项目,该项目以胖子罐的形式构建(jar-with-dependencies使用maven assembly plugin),然后我从ALM(测试管理软件)运行该项目] >

运行肥罐时,出现此错误:

NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor

Google表示这是由于com.google.guava的版本之间存在冲突(在编译时和运行时使用的是不同版本?)。>

!!因此,我在我的envelope项目的pom.xml的最顶部放置了一个对guava 28.1的依赖项,并将对guava的排除放在了所有其他依赖项下。但是,我仍然在运行时收到此错误! :(

此外,如果我从.m2(本地Maven存储库)中删除了番石榴,那么在编译时,我会看到Maven下载了大约七个不同版本的番石榴!

我怎么知道为什么要这么做?我如何防止它这样做?以及如何解决错误?

设置

-Java 11.0.3

-Groovy 2.5.8

-Spock 1.3-groovy-2.5

-IntelliJ IDEA 2019.1

-Maven 3.5

-Maven compiler plugin

-Maven build helper plugin

-Maven assembly plugin 3.8.1

我有一个可以很好地构建和执行的项目(主项目)。我有另一个项目(信封),该项目依赖于主项目,该项目依赖于一个胖子罐(使用maven组件的jar依赖关系...

java maven guava
1个回答
0
投票

您可以尝试将依赖项放在Maven dependency management中,以便管理在传递性依赖项中使用的工件的版本。

 <dependencyManagement>
    <dependencies>
        <!-- add your dependency here -->
    </dependencies>
</dependencyManagement>
© www.soinside.com 2019 - 2024. All rights reserved.