Top / Eclipse / プラグイン開発のTIPS集 / プラグインのディレクトリを取得する

自作のプラグインなどに設定ファイルなどがあり、そのディレクトリへのパスを取得したい場合などが結構あります。たとえばLog4jの初期化のためにlog4j.xmlを読み込む、などですね。

そこで、あるプラグインのディレクトリへのパスを取得する方法です。Eclipse2.x系から3.1系、また3.2系といろいろやり方が変わっています。

プラグインのディレクトリを取得する(2.0系)

 String pluginDirectory = Platform
    .resolve(getDefault().getDescriptor().getInstallURL()).getPath();

で取得できます。 ちなみにLog4jの初期化などはAbstractUIPluginのサブクラス(勝手に作られるヤツ)で

public void startup() throws CoreException {
 super.startup();

 String pluginDirectory = null;
 try {
  pluginDirectory =
   Platform
    .resolve(getDefault().getDescriptor().getInstallURL())
    .getPath();
 } catch (IOException e) {
  e.printStackTrace();
 }

 DOMConfigurator.configure(new File(pluginDirectory, "lib/log4j.xml").toString());
}

などとstartup()をOverrideすればよいでしょうか。

プラグインのディレクトリを取得する(3.0系)

Eclipse3.0から上のやり方は deprecated になりました。2.0で

String pluginDirectory = Platform
    .resolve(getDefault().getDescriptor().getInstallURL()).getPath();

だったのを3.0では

URL entry = getDefault().getBundle().getEntry("/");
String pluginDirectory = Platform.resolve(entry).getPath();

と書き換えます。

http://www3.vis.ne.jp/~asaki/p_diary/diary.cgi?Date=2004-09-05

プラグインのディレクトリを取得する(3.2系)

Eclipse3.2からまたdeprecatedになっちゃいました。今度は、

URL entry = ClientPlugin.getDefault().getBundle().getEntry("/");
String pluginDirectory = FileLocator.resolve(entry).getPath();

みたいですね。FileLocator?は org.eclipse.core.runtime.FileLocator? みたいです。


この記事は

選択肢 投票
おもしろかった 17  
そうでもない 1  

Top / Eclipse / プラグイン開発のTIPS集 / プラグインのディレクトリを取得する

現在のアクセス:13388


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-18 (土) 01:19:38 (2578d)