Eclipse RCP:getSite()上的空指针。setSelectionProvider(…)

Eclipse RCP:getSite()上的空指针。setSelectionProvider(…),eclipse,jface,rcp,e4,Eclipse,Jface,Rcp,E4,我已经完成了以下教程: 我想将JFace表查看器(第二和第三个教程中的插件)和第一个教程中的ToDo应用程序结合起来。在JFace表格示例中,有一个从ViewPart延伸的视图。在这方面,我们呼吁: getSite().setSelectionProvider(视图) 在createPartControl方法内部,它很好并且可以工作 但是当我在另一个教程中做同样的事情时,它不起作用,我得到一个NullPointerException。第一篇文章创建了一个插件,然后使用特性和产品将其转换为E

我已经完成了以下教程:

我想将JFace表查看器(第二和第三个教程中的插件)和第一个教程中的ToDo应用程序结合起来。在JFace表格示例中,有一个从ViewPart延伸的视图。在这方面,我们呼吁:

getSite().setSelectionProvider(视图)

在createPartControl方法内部,它很好并且可以工作

但是当我在另一个教程中做同样的事情时,它不起作用,我得到一个NullPointerException。第一篇文章创建了一个插件,然后使用特性和产品将其转换为Eclipse4应用程序。因此,应用程序中的类不是从“Part”派生的。它们使用应用程序模型引用,并且仅使用注释@PostConstruct

为什么我会得到这个NullPointerException? 实际上,我如何将SelectionProvider服务链接到工作台

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

非常感谢您的帮助

谢谢。

Eclipse4(e4)应用程序与传统的Eclipse3.x风格的应用程序完全不同

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


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

很好-这是一个非常好的提示;-)-我完全没有抓住那一点。我现在做的是添加
@injectprivate-ESelectionService-selectionService
。。。并使用
viewer.addSelectionChangedListener添加了一个ISelectionChangeListener(新的ISelectionChangedListener(){@Overwrite public void selectionChanged(…)
请参阅[