Java: библиотеки в библиотеках и проблемы путей к классам - PullRequest
2 голосов
/ 29 марта 2012

У нас идет обсуждение на работе, и возник интересный вопрос:

Скажем, вы разрабатываете небольшую библиотеку, назовите ее somelib .Скажем, что somelib необходимо выполнить некоторое ведение журнала, но вы не хотите заново изобретать колесо, поэтому вы решили использовать стороннюю библиотеку ведения журнала.

Кроме того, вы хотите сделать интеграциюsomelib настолько безболезненна, насколько это возможно, поэтому вы распространяете один JAR-файл (somelib.jar), в котором есть другой JAR-файл журналирования, назовите его logger.jar, встроенный в него .Очень похоже на то, что делает сборка jar-с-зависимостями в Maven.

Теперь возникает проблема.Поскольку ваш продукт является библиотекой, что делать, если ваш клиент использует somelib , а также случайно использует другую версию той же библиотеки журналов самостоятельно.Теперь у нас есть проблема с classpath.

Мне кажется, что это обычная проблема для людей, которые пишут библиотеки, так какое же типичное решение?

  1. Они вообще избегают использовать методы связывания JAR?Даже если мы это сделаем, все еще существует проблема с кодом пользователя, ожидающим версию X библиотеки журналов, и с кодом somelib , ожидающим версию Y.

  2. Вставляют ли они каким-то образом фиктивный префикс пакета, чтобы классы регистратора в somelib не конфликтовали?

  3. Как насчет динамической загрузки библиотеки регистратора?(хотя это все еще имеет проблемы с версиями от 1.)

1 Ответ

1 голос
/ 29 марта 2012

Вы можете использовать OSGI или подождать JDK 8 и его проекта Jigsaw.

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