Если у вас получится огромный список исключений, вы, вероятно, должны принять это как признак того, что что-то не так с вашим процессом сборки и комплектом.
Если бы это был я, первое, что я сделал бы, это взломал ваш пакет и посмотрел, какие классы он включает, и какие пакеты он экспортирует. Я подозреваю, что у вас довольно массивный пакет, а это значит, что зависимости вашего пакета будут довольно обширными. Это означает, что вы теряете много преимуществ модульности OSGi, и это может вызвать много практических проблем.
Каждый раз, когда вы объявляете пакет необязательным, вы говорите: «Я рад принять исключения ClassDefNotFoundException для классов в этом пакете». Для вашего кода вы, вероятно, можете знать, является ли пакет действительно необязательным, но довольно сложно догадаться, какие пакеты, используемые третьей стороной, являются необязательными. Это, конечно, то, почему предварительно упакованные банки более удобны, но я понимаю, что это не очень поможет вам. :)
То, что вы делаете, встраивая стороннюю библиотеку, объединяет ее, но не так, чтобы ее можно было повторно использовать. (Другое отличие состоит в том, что он будет использовать загрузчик классов совместно с пакетом встраивания, что может заставить вещи работать намного лучше, если, например, сторонняя библиотека попытается загрузить вашу классификацию отражением.) Так как у вас возникают проблемы с зависимостями Я бы предпочел добавить шаг сборки, который обернет сторонний jar-файл, чтобы вы могли четко видеть, какие классы и зависимости относятся к вашему коду, а какие к этому дополнительному jar-файлу.
Другая вещь, на которую я бы посмотрел, - это ваш экспортный пакет = * предложение. Это будет экспортировать каждый пакет в вашем classpath, что означает, что все эти пакеты будут встроены в ваш jar. И вы получаете весь их пакет импорта тоже. Ваш плохой комплект становится целым приложением, а не модулем OSGi, на который вы надеялись. Вы должны ограничить свой экспорт до минимума (вы хотите, чтобы ваши внутренности были приватными, и вы определенно не хотите делиться чужими внутренностями).
-
Enterprise OSGi в действии: http://www.manning.com/cummins