1

我目前有一个现有的插件,它引用了所需插件中的一个类。我已将此代码替换为对属于我的片段的一部分的类的引用。

我面临两个问题。如果我将片段作为 jar 文件导入,我将看不到我所做的更改,因为作为 Eclipse 应用程序运行的插件会导致 ClassNotFoundException

为了克服这个问题,我将一个额外的源(片段)链接到现有的插件项目。但是,该链接使用绝对路径,使其不适合部署。

我希望能够将插件与代码修改一起打包,并能够“依赖”我的片段代码。有没有办法可以将我的片段添加为依赖项?

例如:

Plugin Project I am changing : org.eclipse.*.editor
it depends on org.eclipse.*.edit

I have a fragment mydomain.*.edit which has org.eclipse.*.edit as host plugin

I want org.eclipse.*.editor to pick up mydomain.*.edit 
instead of org.eclipse.*.edit

ps:我也尝试将mydomain.*.edit的jar文件打包到plugins目录中并尝试从那里提取它,当我单击插件依赖选项卡上的add required plugins时它没有显示在列表中org.eclipse.*.editor 的 .xml 文件

如果我不够清楚,请告诉我,我会尝试改写它。

提前致谢!

4

2 回答 2

2

如果我正确理解您想要做什么,我认为这是不可能的。您将不得不尝试其他方式。

插件依赖于其他插件。片段不作为单独的运行时实体存在,而仅作为插件的扩展存在。所以你的插件只能引用“编辑器”插件。

片段提供的类不能(也不应该)直接访问。如果它们正在实现插件 A 提供的可执行扩展,则它们可以由原始插件 (A) 返回。

如果您从另一个插件 (B) 引用片段的代码,则这些类将由插件 B 的类加载器加载,并且与插件 A 加载的类不同。

你的片段的目的是什么?您想访问插件 A 中的内部代码吗?你想扩展一个 Eclipse 编辑器吗?

如果您想扩展原始插件未公开为可扩展的功能,我认为唯一的方法是编写一个插件,从原始插件扩展编辑器类,将其与原始插件一起注册并改用它。

[编辑] 也许这个链接会更好地解释:Eclipse FAQ

希望这会有所帮助,弗拉德

于 2009-05-08T11:10:39.647 回答
0

谢谢弗拉德,你的解释很有帮助。与真正适用于片段的基于扩展的架构不同,我必须在编辑器中修改某个未作为扩展的一部分公开的组件。这个修改引用了我作为片段创建的外部项目,但可能是一个普通的 java 项目,它打包了一个我可以放在编辑器的类路径中的 jar 文件。

我可以通过将 jar 文件放在类路径中来解决依赖问题,但是当我将插件和相关插件导出为 jar 文件并将其放在 dropin 目录中时,它无法正确安装。(也不会将 jar 文件放在 plugins 目录中)

我尝试修改的 Eclipse 编辑器使用 EMF 项目。我将 EMF 项目保留在工作区中,以解决编辑器的依赖关系。但是,当我将与 eclipse 捆绑的 EMF jar 文件替换为工作区中的 EMF jar 文件时,无法正确识别我要编辑的文件。

还有另一种方法吗?

于 2009-05-18T14:06:17.980 回答