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 样式插件时使用(并且这些不使用 IWorkbenchWindow
或 PlatformUI
)。
如果你想使用 IWorkbenchWindow
,你正在编写一个 3.x 兼容模式插件,并且不能对命令处理程序(和大多数其他东西)使用注入。命令处理程序必须具有无参数构造函数。
我想测试我的 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 样式插件时使用(并且这些不使用 IWorkbenchWindow
或 PlatformUI
)。
如果你想使用 IWorkbenchWindow
,你正在编写一个 3.x 兼容模式插件,并且不能对命令处理程序(和大多数其他东西)使用注入。命令处理程序必须具有无参数构造函数。