![](/img/trans.png)
[英]How do I get the file path of the open workspace for developing plugins in 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.