【问题标题】:Eclipse RCP: NullPointer on getSite().setSelectionProvider(...)Eclipse RCP:getSite().setSelectionProvider(...) 上的 NullPointer
【发布时间】:2014-05-07 21:11:08
【问题描述】:

因为我已经完成了以下教程:

http://www.vogella.com/tutorials/EclipseRCP/article.html

http://www.vogella.com/tutorials/EclipseJFaceTable/article.html

http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html

我想将 JFace 表格查看器(第 2 和第 3 教程中的插件)和第 1 教程中的 ToDo 应用程序结合起来。在 JFace 表示例中,有一个从 ViewPart 扩展的视图。在此调用:

getSite().setSelectionProvider(视图)

createPartControl 方法内部很好并且可以工作。

但是当我在其他教程中做同样的事情时它不起作用,我得到一个 NullPointerException。第一篇文章创建一个插件,然后使用特性和产品将其转换为 Eclipse 4 应用程序。所以应用程序中的类不是从“部分”派生的。它们是使用应用程序模型引用的,并且只使用注解@PostConstruct。

为什么我会得到这个 NullPointerException? 真的,我怎样才能将 SelectionProvider 服务链接到 Workbench?

我也尝试使用 PlatformUI.getWorkbench() 但它说工作台还不存在。

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: eclipse jface rcp e4


    【解决方案1】:

    Eclipse 4 (e4) 应用程序与传统的 Eclipse 3.x 风格的应用程序完全不同。

    在 e4 应用程序中,您不能使用 Eclipse 3.x 应用程序中使用的很多东西——因此您需要检查您使用的示例基于哪种样式。 e4 应用程序可以访问许多 3.x 应用程序中没有的新功能。

    在 e4 应用程序中,您注入 ESelectionService 以获取和设置当前选择。

    【讨论】:

    • 太棒了 - 这是一个很好的提示 ;-) - 我完全错过了这一点。我现在做的是添加@Inject private ESelectionService selectionService
    • ... 并添加了一个带有viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Overwrite public void selectionChanged(...) 的 ISelectionChangeListener 参见 [wiki.eclipse.org/Eclipse4/RCP/EAS/…
    猜你喜欢
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多