我目前正在使用基于Eclipse和RCP开发的Java应用程序;这个应用程序有很少的jar格式的插件文件,这些文件包括特定的pricelist生成程序。
我需要开发一个全新的应用程序,它使用现有的扩展来构建新的价格表,所以我创建了一个新的插件项目,并尝试创建与现有扩展程序兼容的扩展点。
问题是我对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
}
}
我总是得到0个元素。
所以我确定在创建扩展点时或者在添加可用扩展名时出错了......或者两者兼而有之!
实际上: - 我在项目中添加了jar文件,然后包含在构建配置中 - 我创建了扩展点 - 我打开.exsd文件,添加了一个带有“class”属性的“client”元素;这个类“Implements”字段指向jar类中定义的对象(同一个对象在插件文件中实现) 在插件文件(.jar)里面我有这个:
public class Pricelist2017 extends Pricelist
implements IPricedata
{
...
-
编辑: 在应用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());
}
我得到了(发现了2个扩展名):
client
null
prices.year.2016.Doc16@21b2e768
client
null
prices.year.2015.Doc15@313b2ea6
我遗漏了别的东西,但找到触摸的位置很棘手。 非常感谢你的帮助!