【问题标题】:Eclipse plugin - How to inject a IWorkbenchWindow in the constructor of a command handlerEclipse 插件 - 如何在命令处理程序的构造函数中注入 IWorkbenchWindow
【发布时间】:2016-07-31 17:36:30
【问题描述】:

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

PlatformUI.getWorkbench().getActiveWorkbenchWindow()

让我依赖 PlatformUI。

但是我试图这样做

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

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

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

void execute(ExecutionEvent event)

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

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

感谢我如何解决此问题的任何想法。

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

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

    如果您想使用IWorkbenchWindow,您正在编写一个 3.x 兼容模式插件,并且不能将注入用于命令处理程序(以及大多数其他事情)。命令处理程序必须有一个无参数构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 2017-03-07
      • 2016-09-06
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多