Звучит так, будто вы пытаетесь настроить сложную систему взаимозависимости, которая работает не очень хорошо.
Вам известно о шаблоне доски? Вы можете прочитать больше здесь:
http://www.osgi.org/wiki/uploads/Links/whiteboard.pdf
Итак, основываясь на этом шаблоне, скажем, A - это ваш «основной» пакет, который загружает основной интерфейс. Для простоты, скажем, пакет A также экспортирует следующий интерфейс:
public interface UIExtensionService {
Control createExtension(Composite parent);
}
Пакет B (и C, D, E, F и т. Д.) Затем регистрирует соответствующие реализации этого интерфейса. Вы можете использовать свойства при регистрации службы, чтобы помочь вашему основному пакету, например, сузить конкретную реализацию, если вы хотите показать что-то конкретное на основе заданного пользователем ввода.
Bundle A затем использует BundleContext для поиска подходящей реализации UIExtensionService и вызывает метод createExtension, передавая родительский объект, который вы хотите использовать.
Надеюсь, это поможет.