Получение ошибки «класс не найден» во время выполнения из-за проблемы зависимостей maven:
Я работаю над интеграцией twilio sdk (com.twilio.sdk: twilio: 7.35.0) в многомодульный проект maven (3.x) / java (java8).
Я сначала добавил зависимость Twilio Maven в соответствующий модуль
И я получаю исключение класса не найден во время выполнения на org.apache.http.conn.HttpClientConnectionManager.
Я изучил его и обнаружил, что этот класс является частью org.apache.httpcomponents: httpclient (который является зависимостью в twilio sdk) и что более ранняя версия этой зависимости находится в моем проекте.
И эта более ранняя версия не имеет класса HttpClientConnectionManager.
Итак, с этого момента я попытался исключить старую версию зависимости сначала с помощью тега exclude, а затем с помощью плагина maven inspecer и в то же время импортировать зависимость напрямую, но ничего не получалось.
Я попытался импортировать зависимость в родительский pom и в другие модули, которые также используют мой модуль twilio.
Я использую twilio 7.35, который использует org.apache.httpcomponents: 4.5.6, но в моем многомодульном проекте я использую org.apache.cassandra: cassandra-thrift: 3.0.0, который использует thrift: 0.9.2 который содержит старую версию httpclient (4.2.5).
Последняя версия этого модуля cassandra не поддерживает последнюю версию httpClient, поэтому я должен убедиться, что эта более старая зависимость httpclient не испортит twilio.
Я также проанализировал вывод зависимости mvn: tree -Dverbose, и кажется, что 4.5.6 получает исправление. И когда я попытался добавить его в родительский модуль или вызывающий модуль, я увидел, что старая версия перезаписывается twilio, но это не решает мою проблему.
Я начинаю задаваться вопросом, возможно ли вообще иметь две версии зависимостей в одном проекте maven.