NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть проект (main), который прекрасно собирается и выполняется.

У меня есть другой проект (envelope), с зависимостью от проекта main, который создается как толстый фляга(jar-with-dependencies с использованием maven assembly plugin), который я затем запускаю из ALM (программное обеспечение для управления тестами)

Когда я запускаю толстую банку, я получаю эту ошибку:

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

Google говорит, что это вызвано конфликтом между версиями com.google.guava (разные версии, используемые во время компиляции и во время выполнения?).

Я поместил зависимость от guava 28.1 в самый верх моего envelope проекта pom.xml и поместил исключения для guava под ВСЕ другие зависимости.Тем не менее, я все еще получаю эту ошибку во время выполнения!

Как я узнаю, почему это происходит?Как я могу предотвратить это от этого?И как мне исправить ошибку?

EDIT :

mvn dependency:tree показывает только одну зависимость от гуавы.

External libraries показывает только однуверсия guava.

Ctrl+N показывает два экземпляра класса MoreExecutors - один из последней версии гуавы, а другой формирует глубокую временную зависимость от артефакта org.apache.curator, который содержит класс shaded.com.google.common.util.concurrent.MoreExecutors.

Я попытался исключить эту зависимость в своем файле pom.xml, но затем я получаю сообщение об ошибке, в котором говорится, что куратору не удалось найти затененный класс. <..>. MoreExecutors.Так может ли это быть виновником или это что-то еще?

Настройка

-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

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете попытаться поместить свою зависимость в Maven dependency management, чтобы управлять версией артефактов, используемых в переходных зависимостях.

 <dependencyManagement>
    <dependencies>
        <!-- add your dependency here -->
    </dependencies>
</dependencyManagement>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...