我有一个基于3.x API的eclipse RCP应用程序。我的应用程序包含几个透视图,其中每个透视图包含多个视图和编辑器。第一个视角从应用程序的启动开始,导航视图在主插件中定义。问题在于其他视角,其中视图在不同的插件中定义,以便更好地进行代码维护。 我在主插件中添加了我的视图,其中包含透视扩展和以下代码:
public class Perspective implements IPerspectiveFactory {
public void createInitialLayout(IPageLayout layout) {
layout.addView(NavigationView.ID, IPageLayout.TOP,
IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);
}
}
奇怪的是,当我在eclipse中运行应用程序时,它完全正常工作,但是一旦我使用Maven / Tycho进行构建并执行创建的应用程序,插件中定义的所有透视图都会消失。再工作了。
问题是,当我添加一个新透视图时,此透视图会打开,但它不包含任何视图,只是灰色背景。
我已经添加了一些println()
语句用于调试目的,似乎从不调用包含视图的各个插件的Activator
。这也可以解释为什么我在我的视角中看不到任何视图,因为应用程序无法找到相应插件的视图扩展中定义的相应视图。
我在上面的println()
方法中添加了以下createInitialLayout
语句:
System.err.println(layout.getViewLayout(NavigationView.ID));
输出为null
,这加强了我之前的观点。
现在的问题可能是什么原因?为什么我的插件没有开始?
我还做了另一个实验,我直接调用了插件中定义的方法之一,并且再次调用了插件的Activator
。
插件的Bundle-ActivationPolicy
设置为lazy
。
有什么建议我下一步可以跟踪问题吗?
Maven / Tycho没有报告任何问题,我使用相同的目标平台,eclipse和Maven / Tycho,所以我也可以排除任何依赖性问题。
我真的很感激任何帮助/支持:)
祝你好运, 汤姆