如何检测是否在osgi容器中运行

Kon*_*hik 4 java eclipse osgi

我有一个OSGi包,也可以在普通的Java进程中运行.我需要能够判断捆绑包是否已加载到OSGi系统中.我怎样才能做到这一点?如果没有OSGi标准的方法,我将采用Eclipse/Equinox特定的方法.

Bre*_*ail 10

将Bundle-Activator添加到您的MANIFEST.MF.如果它被实例化,那么您的JAR正在OSGi容器中运行.


Pau*_*ter 6

如果您没有激活器,您也可以尝试询问您的捆绑包:

Bundle b = org.osgi.framework.FrameworkUtil.getBundle(MyClass.this);
Run Code Online (Sandbox Code Playgroud)

如果它返回null,则OSGi不会加载您的类.