Java RCP : Create Extension point from existing extension

标签 java eclipse ide rcp

我目前正在使用基于 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
    }
}

我总是得到 0 个元素。

所以可以肯定的是,我在创建扩展点或添加可用扩展时犯了错误......或者两者都犯了错误!

实际上: - 我在项目中添加了 jar 文件,然后包含在构建配置中 - 我创建了扩展点 - 我打开 .exsd 文件,添加了一个带有“class”属性的“client”元素;这个类的“Implements”字段指向一个jar类中定义的对象(相同的对象在插件文件中实现) Eclipse window 在插件文件(.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

我还缺少其他东西,但是很难找到可以触摸的地方。 非常感谢您的帮助!

最佳答案

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

首先确保您的扩展点定义定义了如何使用 client 元素。您需要在 extension 部分中有类似 Sequence 的内容: Definition

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

关于Java RCP : Create Extension point from existing extension,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781335/

相关文章:

java - 是否可以通过命令行修改 eclipse 工作区?

eclipse - Groovy 引用变量而不声明

java - luence中无法删除文档索引

java - 如何将我的应用程序添加到快速启动 Ubuntu

java - ContentUris.withAppishedId 和 Uri.buildUpon().appendPath 之间的区别

java - 如何使用 Eclipse 调试器检查 ResultSet 对象的内容?

java - Intellij 代码格式默认为 checkstyle

java - 正则表达式 Lookahead 未按预期匹配

Eclipse 提示 web-app 属性

java - 如何在没有任何 GUI 组件的情况下创建可执行 jar 文件?