2013-09-03 2 views
0

Я пишу клиент (Eclipse RCP), который должен иметь возможность использовать несколько версий библиотеки (которая инкапсулирует интерфейс бэкэнд). В каждой версии библиотеки добавляются новые классы/методы, используемые клиентом. В случае использования более старой версии lib клиент будет обращаться к новым классам/методам, которых нет в байт-коде lib, в результате чего NoClassDefFoundError.Приложение Java, обращающееся к нескольким версиям библиотеки

Так что я думаю о том, как это сделать наилучшим образом. Самый простой способ сделать его отказоустойчивым - обернуть все вызовы такого кода в блоки try/catch, я думаю. Я подумывал написать пользовательскую аннотацию для маркировки нового кода в источнике библиотеки, а затем выпустить предупреждение компилятора, когда к этому отмеченному коду обращается код, который не защищен try/catch (это можно сделать с помощью специальной аннотации? прежде всего). Или кто-то может подумать о другом подходе, который более изящный?

ответ

-1

Вы можете использовать репозиторий maven для предоставления различной версии вашей библиотеки. Maven центральное хранилище доступно для релизов: http://maven.apache.org/guides/mini/guide-central-repository-upload.html

Вы можете настроить собственный экземпляр Artifactory: http://www.jfrog.com/confluence/display/RTF/Configuring+Maven+Deployment+to+Artifactory

+0

Это не совсем то, что я прошу. Проблема не в том, как получить версии lib, но как обрабатывать вещи, о которых я говорю в коде. – dschuld

+0

Хороший способ - это интерфейсы. Вы можете предоставить интерфейсы, которые будут использовать клиентов. Новая реализация будет предоставлена ​​пользователю без проблем. –

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