SBT не удаляет ранее загруженные версии - PullRequest
1 голос
/ 30 мая 2019

Я запускаю Scala 2.11 с SBT и столкнулся с проблемой, когда зависимость, которую я импортирую заново в свой проект, конфликтует с другой, уже находящейся в проекте, которая, как оказалось, используется вновь. ,

Когда я говорю о конфликте, я имею в виду разные классы, которые реализуют разные интерфейсы.

Guava 19.0 (локальная версия lib) не работает с Guava версия, используемая в ранее упомянутой зависимости.

И я решил обновить локальную версию Guava до 26.0-jre.

Пока все хорошо, проблема решена (очевидно).

После выполнения проверки кода, которую я хотел сделать для вновь созданной функции и убедившись, что все работает нормально, я возвращаюсь build.sbt файл и возвращаюсь снова в Guava 19.0.

Я перезапускаю проект, и проблемы больше нет. Что может происходить? Разве я не должен получить ранее упомянутую проблему?

Я зашел в .ivy2 dir, чтобы проверить там версии, и все они 19.0 (они даже не обновляются до 26.0-jre или что-то там). Надеюсь, что проливает свет.

1 Ответ

1 голос
/ 30 мая 2019

что ожидается.После того, как вы загрузили, он будет там (папка .ivy2) навсегда.Что касается того, почему ваш проект все еще работает нормально, просто потому, что загрузчик классов загружает версию 26 на этот раз.Так что это зависит от порядка загрузки загрузчика классов, который ваш sbt не может гарантировать.Maven также имеют аналогичные проблемы.Обычно нам необходимо использовать exclude для устранения такой потенциальной проблемы.Надеюсь, что это может помочь.

libraryDependencies += "log4j" % "log4j" % "1.2.15" exclude("javax.jms", "jms")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...