2016-07-31 1 views
0

Eclipseプラグインのコマンドハンドラクラスをテストしたいと思います。私はEclipseプラグイン - コマンドハンドラのコンストラクタにIWorkbenchWindowを挿入する方法

PlatformUI.getWorkbench().getActiveWorkbenchWindow() 

がPlatformUIへの依存を私に残しているため、このハンドラクラスのコンストラクタでIWorkbenchWindowのインスタンスを注入したい理由です。私はこの

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

を実行しようとしました、その後、フレームワークはFindAndReplaceHandlerクラスが引数なしのコンストラクタを持っていないという不満を持つNoSuchMethodExceptionがスローされます。しかし

私のクラスFindAndReplaceHandlerはAbstractHandler拡張し、

のEclipseの私のバージョンである(だから私は注釈@Executeと@CanExecuteで近代的な方法を使用していない)

void execute(ExecutionEvent event) 

を上書きします:バージョン:火星.2(4.5.2)。 私は、Eclipseのバージョン= "3.5以上"の設定でEclipseプラグインプロジェクトを作成しました。しかし、おそらく私はe4ツールをインストールし、それらと一緒に作業する必要がありますか?それらをインストールするには?

どのように私はこの問題を解決することができます任意のアイデアが評価されます。

答えて

2

コマンドハンドラの@Injectスタイルは、純粋なe4スタイルのプラグインを書くときにのみ使用されます(これらはIWorkbenchWindowまたはPlatformUIを使用しません)。

IWorkbenchWindowを使用する場合は、3.x互換モードのプラグインを作成しており、コマンドハンドラ(および他のほとんどのもの)には注入を使用できません。コマンドハンドラの引数なしのコンストラクタが必要です。

関連する問題