什么是纯OSGi等效于以下Eclipse平台调用:
org.eclipse.core.runtime.Platform.getBundle([bundle-id]) - > Bundle
没有直接等价的getBundle(String symbolicName),并且普通的OSGi没有这样的静态助手,因为VM中可能有多个框架.
正如Amir指出的那样,getBundle(long id)如果您知道它的ID ,就可以使用它来获取一个包.
如果您想要具有给定符号名称的包,在最高版本中,您可以执行类似的操作(假设您有BundleContext可用的),
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;
}
Run Code Online (Sandbox Code Playgroud)
如果BundleContext由于某种原因你没有可用的(我猜这些是罕见的情况),你可以尝试使用FrameworkUtil找到一个,
FrameworkUtil.getBundle(getClass()).getBundleContext()
Run Code Online (Sandbox Code Playgroud)
通过它你可以获得Bundle加载给定类的内容,甚至是片段.
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |