Mule — обновление сторонней библиотеки во время выполнения

Я использую Mule Server 3.8 EE, который включает в себя commons-lang 2.4. Сторонней библиотеке в моем проекте требуется commons-lang 2.6, потому что она использует метод, представленный в этой версии.

Поэтому, когда я только запускаю свое приложение, я получаю java.lang.NoSuchMethodError

Есть ли способ обновить зависимость во время выполнения? Что я пробовал до сих пор:

  • включая commons-lang 2.6 в моем приложении -> никакого эффекта, сначала подбирается тот, что из среды выполнения
  • замена jar прямо в рантайме -> ошибки в студии, что отсутствует jar 2.4

person Erik P    schedule 14.10.2016    source источник
comment
вы пробовали этот подход docs.mulesoft .com/mule-user-guide/v/3.7/   -  person Alpesh Gediya    schedule 15.10.2016
comment
Это только добавляет библиотеку, но затем загрузчик классов сначала подбирает уже существующую более старую версию, и ошибка остается (например, при добавлении с помощью maven)   -  person Erik P    schedule 17.10.2016


Ответы (1)


так что, может быть, я опоздал, НО -- это ваш ответ. Добавьте более новые библиотеки из дистрибутива jar в путь сборки. На экране «Путь сборки Java» вы должны увидеть перечисленные библиотеки. Мне нужно было использовать Apache http-client 4.5.6, и это очень интересно, потому что он приносит с собой множество других зависимостей, поэтому ваш вопрос был ОЧЕНЬ актуальным. Решение состоит в том, чтобы полагаться на соглашения JAVA (а не на мулов -- oops Anypoint или что-то еще) и убедиться, что JVM сначала загружает мои файлы классов. Тогда он не будет загружать старые из кувшина мула. И поэтому я перешел на вкладку «Заказ и экспорт» и переместил Mule в самый низ. Это простое, тривиальное изменение заставляет его работать. Я думаю, если бы мы работали с командной строкой и vim, мы бы все это знали. Но весь IDE gui и все остальное заставляет нас забыть о самых простых вещах. Пожалуйста, используйте его на здоровье. :)

person Menashe Borbely    schedule 06.07.2017