我正在创建一个IClasspathContainer,它使用eclipse访问已安装的OSGi Bundle(Eclipse插件)。我通过
获得了捆绑的IPath Bundle bundle = Platform.getBundle(pluginId);
fullPath = FileLocator.getBundleFile(
return Path.fromOSString(fullPath);bundle).getAbsolutePath();
但是,如果安装了源包,我也想提供源代码。源包由eclipse命名,例如对于插件 org.example.myplugin ,源包名为 org.example.myplugin.source 。
有人知道如何访问源包吗?
答案 0 :(得分:1)
没有直接的方法可以通过它的符号名称找到OSGi包,但是可以通过循环遍历所有包来轻松地完成它。
BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
String requestedName = bundleContext.getProperty(Constants.BUNDLE_SYMBOLICNAME) + ".source";
Bundle sourceBundle = null;
for(Bundle bundle : bundleContext.getBundles())
{
String name = bundle.getBundleContext().getProperty(Constants.BUNDLE_SYMBOLICNAME);
if(name != null && name.equals(requestedName))
{
sourceBundle = bundle;
break;
}
}
可以通过以下方式访问捆绑包的位置:
sourceBundle.getLocation();