У меня есть пакет OSGi, который также может работать в простом Java-процессе.Мне нужно иметь возможность сказать, был ли пакет загружен в системе OSGi или нет.Как я могу это сделать?Если для этого нет стандартного для OSGi способа, я остановлюсь на подходе, специфичном для Eclipse / Equinox.
Добавьте Bundle-Activator в свой MANIFEST.MF.Если он создается, то ваш JAR-файл работает в контейнере OSGi.
Если у вас нет активатора, вы также можете попробовать запросить ваш пакет:
Bundle b = org.osgi.framework.FrameworkUtil.getBundle(MyClass.this);
Если он возвращает ноль, ваш класс не был загружен OSGi.
Вы можете проверить, является ли "this.getClass (). GetClassLoader () instanceof org.osgi.framework.BundleReference", что должно быть истинно, только если вы работаете в среде OSGi R4.2.