私のRCP
アプリにはいつでもワークスペースの場所を求めるプロンプトが表示されます。デフォルトの場所は、-data
のarg(eclipse.ini
)またはosgi.instance.area.default
のプロパティ(configuration/config.ini
)で指定できます。しかし、私は、ユーザがワークスペースの場所を変更するためにこれらのファイルのいずれかを知り編集する必要はありません。Eclipse RCP App:ユーザーにワークスペースの設定を促すには
嗜好の設定Prompt for workspace on startup
は効果がありません。私は-data
引数またはosgi.instance.area.default
プロパティが設定されていないクリーンなワークスペースでアプリケーションを起動し、現在のディレクトリにworkspace
フォルダを作成し、場所の選択を求めません。
私はアプリケーションにIDEApplication
クラスのコピーを使用しています。の後に実行される最初の行の1つである188行目では、プラットフォームの場所がすでに設定されているため、ダイアログが表示されません。 UIを起動しようとする前に既に設定されている理由はわかりません。好みを設定しても効果はありません。 (configuration/.settings/org.eclipse.ui.ide.prefs
で確認したところ、SHOW_WORKSPACE_SELECTION_DIALOG=true
)。
IはcheckInstanceLocation()
の開始時
instanceLoc = instanceLoc.createLocation(instanceLoc, null, false);
を添加することにより位置を再設定しようとしました。これにより、ワークスペースチューザダイアログが表示されますが、この方法で位置を設定しても、起動時にアプリケーションが実際にそのインスタンス領域に使用する内容には影響しません。
私のアプリではearlyStartup
コードが干渉している可能性があると思っていました。あなたがあまりにも早く環境設定にアクセスすると、ワークスペースチューザが開くのを防ぐことができます。だから、私が持っていた宣言を少ししかコメントアウトしていないのに、私はまだワークスペースの選択ダイアログを表示することができません。
保存された場所を拾っている可能性があります。初期の場所は 'org.eclipse.osgi.internal.location.EquinoxLocations'の' buildLocation'メソッドで設定されていますので、それをトレースしてみてください。 –
問題は、私が提供するOSGIサービスがResourcesPluginにアクセスしていることが判明しました。サービスを提供するバンドルのプラグインの遅延起動ポリシーを削除すると、ワークスペース・チューザーがロードされます。しかし今では私のサービスは注入されません(私は宣言的なサービスを提供して消費しています)。サービスバンドルの開始レベルを上げようとしましたが、それは助けになりませんでした。サービスの開始を遅らせるか、バンドルを遅延させることなくサービスを利用可能にするにはどうすればよいですか? – MidnightJava
NM。私は十分に高いスタートレベルを試していないようだ。デフォルトは4で、私は5を試しました。それは7以上で動作します。私は10を使うべきだと思いますか?何が必要なのかを正確に判断する方法はありますか? – MidnightJava