簡體   English   中英

如何在Eclipse工作區中獲取插件

[英]How to get the plugins in Eclipse workspace

我曾經不贊成使用IPluginRegistry來獲取所有插件,現在在新版本中,它的一些方法實現已被刪除,例如getPluginRegistry。

IPluginRegistry pReg = Platform.getPluginRegistry();
IPluginDescriptor[] plugins = pReg.getPluginDescriptors();
IPluginPrerequisite[] pPrereqs = plugins[i].getPluginPrerequisites();

上面的代碼還有其他選擇嗎?

另外,我無法從eclipse 4.3中的如下所示的plugin-id獲取插件,不贊成使用getPlugin(plugin_id)方法,並在新版本中刪除了其實現。 下面的代碼還有其他選擇嗎?

Plugin plugin = Platform.getPlugin(pluginId);
boolean bool = plugin instanceOf MyCustomPlugin;

MyCustomPlugin.java

public abstract MYCustomPlugin extends AbstractUIPlugin{
}

如果我使用如下所示的捆綁軟件,則只能獲得不帶插件名稱的包名稱,例如com.plugins.pluginPack而不是com.plugins.pluginPack.MyCustomPlugin 我需要完整的插件,而不僅僅是軟件包名稱。

Bundle bundle = Platform.getBundle(pluginId);

我感謝有人幫助我! 謝謝。

您可以使用平台狀態來獲取已安裝的捆綁包描述的列表:

State state = Platform.getPlatformAdmin().getState();
BundleDescription [] bundles = state.getBundles();

BundleDescription具有諸如getRequiredBundles方法,這些方法返回捆綁需求的列表。

BundleSpecification [] specs = desc.getRequiredBundles();

您不再可以獲取Plugin的插件,可以使用以下方法獲取插件的Bundle

Bundle bundle = Platform.getBundle("plugin id");

由於插件類只有一個實例,因此您可以在該類中使用static來保存該實例ResourcesPlugin這樣做例如:

public final class ResourcesPlugin extends Plugin {
  private static ResourcesPlugin plugin;

  public ResourcesPlugin() {
    plugin = this;
  }

  public static ResourcesPlugin getPlugin() {
    return plugin;
  }
}

由於IPluginDescriptor不再受支持,因此對於“插件描述符” uniqueIdentifier,我們可以使用捆綁軟件

Myplugin plugin;  //this Myplugin extending Plugin abstract class

IPluginDescriptor pluginDescriptor = plugin.getDescriptor();
String uniqueIdentifier = pluginDescriptor.getUniqueIdentifier();

**替代品(下)

String uniqueIdentifier = plugin.getBundle().getSymbolicName()

對於插件對象,可以使用bundle和org.osgi.framework.Constants找到替代方法。

Plugin plugin = Platform.getPlugin(pluginId);

**替代品(下)

Bundle bundle = Platform.getBundle(pluginId);
String activator = (String)bundle.getHeaders().get(Constants.BUNDLE_ACTIVATOR);
Object activatorInstance = bundle.loadClass(activator).newInstance();
Plugin plugin = (Plugin) activatorInstance;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM