Eclipse 插件 - 如何在命令处理程序的构造函数中注入 IWorkbenchWindow

Eclipse plugin - How to inject a IWorkbenchWindow in the constructor of a command handler

我想测试我的 Eclipse 插件的命令处理程序 class。这就是为什么我想在此处理程序的构造函数中注入 IWorkbenchWindow 的实例 class,因为

PlatformUI.getWorkbench().getActiveWorkbenchWindow()

让我依赖于 PlatformUI。

但是我尝试这样做

@Inject
public FindAndReplaceHandler(IWorkbenchWindow workbenchWindow) {
    this.fWorkbenchWindow = workbenchWindow;

然后框架抛出 NoSuchMethodException 抱怨 FindAndReplaceHandler class 没有无参数构造函数。

我的 class FindAndReplaceHandler 扩展了 AbstractHandler 并覆盖了

void execute(ExecutionEvent event)

(所以我不使用带有注释@Execute 和@CanExecute 的现代方式)

我的Eclipse版本是:版本:Mars.2 (4.5.2)。 我使用设置 Eclipse 版本 =“3.5 或更高”创建了我的 Eclipse 插件项目。但是,也许我需要安装 e4 工具并使用它们?如何安装?

任何解决此问题的想法都将受到赞赏。

命令处理程序的@Inject 样式仅在编写纯 e4 样式插件时使用(并且这些不使用 IWorkbenchWindowPlatformUI)。

如果你想使用 IWorkbenchWindow,你正在编写一个 3.x 兼容模式插件,并且不能对命令处理程序(和大多数其他东西)使用注入。命令处理程序必须具有无参数构造函数。