Как было написано в предыдущих ответах, у вас есть два варианта, если вы хотите использовать дополнительные библиотеки в своих пакетах:
- встраивание jar-файлов библиотеки в связку, в которой она будет использоваться,
- создание действительного пакета OSGi из библиотеки.
Первый подход проще, потому что вам нужно только скопировать jar-файлы библиотеки (и все ее зависимости) в пакет (например, в корневой каталог), а затем добавить их в элемент Bundle-Classpath
в MANIFEST.MF
(см. здесь). Однако при этом вы должны помнить, что эта добавленная библиотека будет видна только в пакете, в который она встроена (поэтому повторное использование библиотеки ограничено). Вы всегда можете добавить пакеты из этой библиотеки в элемент Export-package
в MANIFEST.MF
, чтобы сделать его видимым для других пакетов, но это далеко не изящное решение (однако оно будет работать).
Чтобы сделать его видимым для других пакетов, вы должны использовать второй подход, то есть создать пакет OSGi из библиотеки (есть инструменты, которые могут помочь вам в этом, также в Eclipse). Однако для более сложных библиотек этот подход может быть сложнее (из-за зависимостей и конкретного подхода к загрузке классов в OSGi).
Поэтому, если вы хотите использовать библиотеку только в одном пакете, я предлагаю использовать первый подход (его проще реализовать). Если вы хотите использовать эту библиотеку во многих пакетах в своем приложении, вам следует рассмотреть второй подход.
person
Piotr
schedule
08.02.2011