У меня есть проект (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