プラグインのアクティベータstart
メソッドは、プラグイン内の他のものが使用されるまで実行されないため、リスナーを配置するのに適していません。デフォルトでは、プラグインはEclipseの初期化中にロードされず、必要なときにのみロードされます。
org.eclipse.ui.startup
拡張ポイントを使用して、IStartup
を実装するクラスを定義して、Eclipseの初期化中に実行することができます。
このインターフェイスで定義されているearlyStartup
メソッドは、UIが初期化される前に実行されることがあります。 。選択サービスを得るために例えば
Display.getDefault().asyncExec(new Runnable() {
public void run() {
// UI code
}
});
:earlyStartup
からUIコードを実行するには、次のようなものを使用してください。)私はPlatformUI.getWorkbench()を呼び出そうとしましたgetActiveWorkbenchWindow(
@Override
public void earlyStartup()
{
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
final ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
System.out.println("service " + service);
}
});
}
をgetSelectionService ();選択サービスを取得するが、それはNPEを投げる。 –
これはasyncExec Runnableですべてのことを行う限り動作します - 答えの私の追加の例を見てください。 –
私はUIJobを作成して、すべてをrunメソッドに入れてスケジュールしましたので、うまくいきませんでした。 –