当 Part 被激活时,Context 为空。什么会导致这个?

Context is null when Part is being activated. What can cause this?

我的 eclipse 3.x RCP 应用程序有 2 个视角。当应用程序启动并且透视图 A 处于活动状态时,所有部分都将正确创建和显示。当应用启动并且 Perspective B 处于活动状态时,大多数部分都是空的并且 createControl 永远不会被调用。如果我重置透视图,那么所有部分都会正确创建。

到目前为止,我发现 PartActivationHistory.activate 中的 part 有一个空上下文,这会导致 NullPointerException。为什么会这样?谁在何时设置上下文?

    void activate(MPart part, boolean activateBranch) {
        IEclipseContext context = part.getContext();
        if (activateBranch) {
            context.activateBranch();
        } else {
            IEclipseContext parent = context.getParent();
            do {
                context.activate();
                context = parent;
                parent = parent.getParent();
            } while (parent.get(MWindow.class) != null);
        }

        prepend(part);
    }

问题是在 Workbench 完全初始化之前执行某些操作引起的。这在过去似乎不是问题,但我最近将平台从 Kepler 更新到 2020/6。