Java RCP:从现有扩展创建扩展点

Java RCP:从现有扩展创建扩展点,java,eclipse,ide,rcp,Java,Eclipse,Ide,Rcp,我目前正在使用一个基于Eclipse和RCP开发的Java应用程序;这个应用程序很少有jar格式的插件文件,这些文件包括生成价格表的特殊过程 我需要开发一个全新的应用程序,使用现有的扩展来构建新的价格表,因此我创建了一个新的插件项目,并尝试创建与现有扩展兼容的扩展点 问题是我对RCP一点也不在行,所以我肯定犯了一些错误:当我试图用这个来获得扩展时: IExtensionRegistry reg = Platform.getExtensionRegistry(); IConfigurationEl

我目前正在使用一个基于Eclipse和RCP开发的Java应用程序;这个应用程序很少有jar格式的插件文件,这些文件包括生成价格表的特殊过程

我需要开发一个全新的应用程序,使用现有的扩展来构建新的价格表,因此我创建了一个新的插件项目,并尝试创建与现有扩展兼容的扩展点

问题是我对RCP一点也不在行,所以我肯定犯了一些错误:当我试图用这个来获得扩展时:

IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = 
reg.getConfigurationElementsFor("prices.year");

for (int i = 0; i < extensions.length; i++) {
    if(extensions[i].getName().equals("2016")) {
        // Do something
    }
}
-

编辑: 在应用了greg-449建议后,现在我能够获得一些扩展,但当我尝试访问它们时,我面临着问题:

IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = reg.getConfigurationElementsFor("prices.year");

for (int i = 0; i < extensions.length; i++) {
    System.out.println(extension[i].getName());
    System.out.println(extension[i].getAttribute("id"));
    System.out.println(extension[i].toString());
}
我还遗漏了一些东西,但要找到触碰的地方很难。
非常感谢您的帮助

到目前为止,您刚刚定义了扩展点。这只是使扩展点可供使用,它不会创建扩展的任何用途

首先,确保扩展点定义定义了如何使用
客户机
元素。在
扩展部分
部分,您需要有类似于
序列的内容:

现在必须创建扩展点的一些用法。在plugin.xml编辑器的“扩展”选项卡中,单击“添加…”并创建扩展。在这里,您可以指定实现
IPricedata
的类:

太好了。它起作用了!所以我绝对需要提前知道有多少类正在实现IPricedata,然后逐个添加它们?(实际上,我有几百个类正在实现IPricedata,每个类都有不同的属性,我需要以编程方式选择它们)是的,您需要为每个类创建一个扩展来使用扩展点来实现这一点。
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = reg.getConfigurationElementsFor("prices.year");

for (int i = 0; i < extensions.length; i++) {
    System.out.println(extension[i].getName());
    System.out.println(extension[i].getAttribute("id"));
    System.out.println(extension[i].toString());
}
client
null
prices.year.2016.Doc16@21b2e768

client
null
prices.year.2015.Doc15@313b2ea6