我从GitHub下载了一个样例项目here,它使用RCP开发的混合模式。在这个项目中,他们将'e4‘D.I特性访问到现有3.xRCP应用程序中。
对于我的3.xRCP应用程序(它有我自己的.product文件),我也尝试了同样的方法,但是我在'MyLegacyIDE.e4xmi‘文件中定义的菜单(或部件)没有反映到启动的产品和UI中(菜单、视图、部件等)。与我的Eclipse3.x系列中的相同。将MyLegacyIDE.e4xmi文件添加到我的插件项目中时,没有发生任何新的情况。
此外,我将'applicationXMI‘参数设置为指向我在插件位置定义的XMI文件,如下所示:
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
application="com.ami.veb.ui.application"
name="VeB - e4 Product">
<property
name="applicationXMI"
value="MyLegacyIDE.e4xmi">
</property>
</product>
我们将非常感谢您的建议!
根本原因(我的问题):
在调试时,我发现我的应用程序模型("MyLegacyIDE.e4xmi")没有被Eclipse正确加载。在以下行中(在加载应用程序模型期间):
Resource applicationResource = loadResource(applicationDefinitionInstance); of ResourceHandler.java ['org.eclipse.e4.ui.internal.workbench' plugin]
applicationDefinitionInstance -->仍然指向'org.eclipse.ui.workbench‘插件下的'LegacyIDE.e4xmi’,而不是我在plugin.xml文件中定义的XMI文件("MyLegacyIDE.e4xmi")。
(即,'applicationDefinitionInstance‘的值是"platform:/plugin/org.eclipse.ui.workbench/LegacyIDE.e4xmi“而不是"platform:/plugin/com.ami.veb.ui/MyLegacyIDE.e4xmi")
如果我说错了,请纠正我。
发布于 2015-10-20 09:12:11
我错过了包括修剪的窗口。在将修剪过的窗口添加到我的LegacyIDE.e4xmi中之后,我的Eclipse3.xRCP应用程序现在能够实现混合模式。
<children xsi:type="basic:TrimmedWindow" xmi:id="_qBUjQHb5EeWNbY4EJKhljA" elementId="com.ami.veb.ui.trimmedwindow.0"/>
最初,我有一个错误的假设,认为需要裁剪窗口。仅当整个布局由应用程序模型控制时(即,仅当我完全迁移到e4架构时)。
后来我注意到,在将此代码添加到我的LegacyIDE.e4xmi文件之后,我可以将Application模型加载到我的3.x Eclipse Workspace中。
https://stackoverflow.com/questions/32839566
复制相似问题