2012-03-13 54 views
2

是否有API方法来获取当前插件的ID?如何在eclipse rcp应用程序中找到插件ID

注:我的RCP应用程序包含一个以上的插件项目,其中一些不包含插件类(Activator类)

,所以我不能让插件ID使用这样的方法:

Plugin.getBundle().getSymbolicName(); 

回答

0

在每个插件类中,您必须拥有您的插件的私有静态实例变量,并且您应该实现getInstance()方法以将引用返回给实例,我相信您必须已经在执行此操作,如果没有看到插件类的参考docomentaion。在YorPluginClass1.getInstance().getBundle().getSymbolicName();YorPluginClass2.getInstance().getBundle().getSymbolicName();之后应该返回它们各自的插件的符号名称。

0

我用下面的代码在我Activators之一:

/** 
* Returns the bundle id of the bundle that contains the provided object, or <code>null</code> 
* if the bundle could not be determined. 
* 
* @param clazz the object to test 
* @return the build ID or <code>null</code> 
*/ 
public String getBundleId(Class<? extends Object> clazz) { 
    if (clazz == null) return null; 

    final PackageAdmin packageAdmin = getBundleAdmin(); 
    if (packageAdmin == null) return null; 

    final Bundle source = packageAdmin.getBundle(clazz); 
    if (source == null || source.getSymbolicName() == null) return null; 

    return source.getSymbolicName(); 
} 

/** 
* Returns the OSGi Package Admin service, if available. 
*/ 
public PackageAdmin getBundleAdmin() { 
    if (bundleTracker == null) { 
     bundleTracker = new ServiceTracker(getContext(), PackageAdmin.class.getName(), null); 
     bundleTracker.open(); 
    } 
    return (PackageAdmin) bundleTracker.getService(); 
} 

是的,我知道了PackageAdmin已过时,但我还没有更新它的时间...

相关问题