Java Eclipse平台的纯OSGi等价物是什么

Java Eclipse平台的纯OSGi等价物是什么,java,eclipse,osgi,Java,Eclipse,Osgi,与以下Eclipse平台调用等效的纯OSGi是什么: org.eclipse.core.runtime.Platform.getBundle([bundle id])->bundle没有直接的等价物,普通OSGi没有这样的静态帮助程序,因为VM中可能有多个框架 正如阿米尔所指出的,如果你知道它的ID,你可以使用它来获取一个包 如果您想要具有给定符号名称的捆绑包,在最高版本中,您可以执行以下操作(假设您有可用的BundleContext) 通过它,您可以获得加载给定类的捆绑包,即使是片段。自OSG

与以下Eclipse平台调用等效的纯OSGi是什么:


org.eclipse.core.runtime.Platform.getBundle([bundle id])->bundle

没有直接的等价物,普通OSGi没有这样的静态帮助程序,因为VM中可能有多个框架

正如阿米尔所指出的,如果你知道它的ID,你可以使用它来获取一个包

如果您想要具有给定符号名称的捆绑包,在最高版本中,您可以执行以下操作(假设您有可用的
BundleContext


通过它,您可以获得加载给定类的
捆绑包,即使是片段。

自OSGi 1.6以来,如果您已经有一个BundleContext,那么也存在该方法。

在普通OSGi中,您可以使用

不确定它是否完全等效。。。我的链接被误解了。它又来了:你在激活器中得到一个BundleContext,你应该以某种方式保持它。某些OSGi DI解决方案还可以为您注入BundleContext。现在,如果您发现自己处于“客户机代码”中,并且看不到BundleContext,那么您应该想知道为什么首先需要查找其他bundle。所讨论的代码位于一个没有激活器概念的片段中。主机包不支持OSGi(除了清单文件),因此也没有激活器。定位其他捆绑包是扩展性所必需的。还有其他想法吗?这对于Platform.getBundle()来说是微不足道的,但我正试图让这个片段放松Eclipse依赖性;我会更新我的答案。这种方法一直存在。该字符串是在安装时确定的位置字符串,在开发时通常未知。此类已弃用:
弃用。此服务已被org.osgi.framework.willing包所取代。
Bundle getBundle(BundleContext bundleContext, String symbolicName) {
    Bundle result = null;
    for (Bundle candidate : bundleContext.getBundles()) {
        if (candidate.getSymbolicName().equals(symbolicName)) {
            if (result == null || result.getVersion().compareTo(candidate.getVersion()) < 0) {
                result = candidate;
            }
        }
    }
    return result;
}
FrameworkUtil.getBundle(getClass()).getBundleContext()