2015-09-03 3 views
1

У меня есть проект A, который зависит от проекта B.Вопрос о конфликте зависимости Maven

Я разработал B отдельно.

В зависит от XML-Apis баночки 1.4.01

А зависит от XML-Apis банки 2.0.2

При использовании XML-Б APIs банка 1.4.01 печально известная ошибка java.lang.NoClassDefFoundError : org/w3c/dom/ElementTraversal.

Когда используется xml-apis jar 1.4.01 Я получаю каскад ошибки, который даже не хочет пытаться исправить.

A - это проект, который я слегка настраиваю.

Что я могу сделать? ничего ? необходимо изменить B.

Бест,

Daniel

+1

Ну Вы можете реорганизовать то или другое, чтобы использовать одну и ту же зависимость. Это потому, что в финальной версии, где A и B будут находиться в одном и том же пути классов, нет никакой гарантии, что загрузчик классов загрузится один над другим, он определяется порядком файла ОС. Другой способ настолько болезненен, что вы, вероятно, предпочтете рефакторинг (который создает ваш собственный загрузчик классов). –

ответ

1

Действительно у вас есть в основном 3 варианта:

  1. либо модифицируют B так, что он может работать с XML-APIs 2.0.2
  2. Или изменить A так, чтобы он мог работать с xml-apis 1.4.01
  3. Или использовать фреймворк, такой как OSGI, который позволяет одновременно загружать разные версии библиотек в t он же VM (в разных загрузчиков классов)

В любом случае, вы, к сожалению, есть много работы ... Я думаю, вы можете попробовать подойти к одному, который требует наименьших изменений ...

Смежные вопросы