eclipse e4启动时自动还原透视图

eclipse e4启动时自动还原透视图,eclipse,eclipse-plugin,eclipse-rcp,e4,emf,Eclipse,Eclipse Plugin,Eclipse Rcp,E4,Emf,我们都知道,默认情况下,eclipse将应用程序状态保存在workbench.xmi中,然后仅当缺少此文件时才重新创建透视图。然而,我有一个e4上的项目,它忽略了这个文件,即使它存在并且参数中没有指定-clearPersistentState。我认为应该有一些代码的地方负责这一点,但该项目太大,我不知道如何跟踪它。我的目标是让这个应用程序再次使用workbench.xmi来恢复透视图 为了研究为什么会发生这种情况,我想知道哪个eclipse方法负责透视图恢复,这样我就可以确保这个项目至少启动了这

我们都知道,默认情况下,eclipse将应用程序状态保存在workbench.xmi中,然后仅当缺少此文件时才重新创建透视图。然而,我有一个e4上的项目,它忽略了这个文件,即使它存在并且参数中没有指定-clearPersistentState。我认为应该有一些代码的地方负责这一点,但该项目太大,我不知道如何跟踪它。我的目标是让这个应用程序再次使用workbench.xmi来恢复透视图

为了研究为什么会发生这种情况,我想知道哪个eclipse方法负责透视图恢复,这样我就可以确保这个项目至少启动了这个方法。这是主要问题

不太主要和不太清楚的问题是如何避免这种默认恢复行为?我的意思是,我应该在哪里寻找这个问题的可能根源?在some.xml中是否存在使项目忘记workbench.xmi的选项?它可能是某种手动恢复默认透视图的启动处理程序吗?也许有一些关于哪些方法可能应该参与其中的提示,以便我可以搜索它们。感谢您的帮助。提前谢谢

-更新-

因此,问题的出现是因为项目UI是在片段中定义的,而不是在主应用程序中定义的。e4xmi和eclipse有一个错误,原因是在先前的状态恢复之后,片段UI与主应用程序合并,从而用预定义的设置替换恢复的设置。这个错误将在线程中讨论


这篇有用的文章介绍了如何手动保存和加载各种应用程序组件。另一个有用的灵感来源是
ResourceHandler
本身的源代码。

E4Application
类控制加载和保存应用程序模型

E4Application
调用实现
IModelResourceHandler
的类来加载和保存模型和持久化状态。应用程序可以使用自己版本的
IModelResourceHandler
,但通常使用默认的
org.eclipse.e4.ui.internal.workbench.ResourceHandler

ResourceHandler
使用
clearPersistedState
PersistedState
和弃用的
deltaRestore
选项来控制持久化状态的加载。这些值可以通过命令行选项设置。

将apply=“initial”添加到plugin.xml中的片段标记,以从workbench.xmi还原存储的透视图

例如:

<fragment
      uri="fragment.e4xmi"
      apply="initial">
</fragment>


您的工作区/目标平台中是否有Eclipse平台源代码?
-persistState false
是另一个完全停止状态持久化的标志。@E-Riz可能是反编译器,但我可以在调试器和set中看到源代码breakpoints@greg-这面旗子没有too@E-里兹:是的,我在eclipse目录中有JAR和源代码