Tips > Eclipse APIのクラスファイルがどのjarファイルにあるか判断するには?

 

Eclipse APIのクラスファイルがどのjarファイルに含まれているか判断するには?

スタンドアローンのアプリケーションを作成するには、必要に応じてEclipse APIが含まれるjarファイルをクラスパスに追加しておかなくてなりません。しかし、pluginsディレクトリにあるjarファイルの名前からは、どのクラスがどのファイルに含まれているかを判断するのは困難です。たとえば、org.eclipse.jface.text.Documentクラスがどのjarファイルに含まれているかを考える場合に、jarファイルの名前からjfacetext.jarとtext.jarと見当がつけられるのですが、どちらに含まれるかは、jarを実際に展開して調べてみなければわかりません。

そこで、Eclipse APIのjarファイルと、そこに含まれるファイル(主にクラスファイル)の対応リストあると便利です。Windowsでは、以下のようなバッチファイルを用意して、jarファイルとそこに含まれるファイルの一覧をファイルに書き出すことができます。

ファイル一覧生成スクリプト: makelist.bat

@echo off

REM pluginsディレクトリを指定
set PLUGIN_PATH=C:\eclipse-2.1.3\plugins

REM pluginsのパスが存在しなければエラーを返して終了
if not exist %PLUGIN_PATH% goto PLUGIN_PATH_ERROR

REM 出力先ファイル名が指定されていなければUsageを表示して終了
if x%1==x goto USAGE
set OUTPUT_FILE=%1

REM すでに出力先ファイルが存在する場合は消去
if exist %OUTPUT_FILE% del %OUPUT_FILE%

REM plugins以下のディレクトリにあるjarファイル、それぞれに含まれるファイルの一覧を
REM OUTPUT_FILEに書き出す。
for /F "usebackq" %%f IN (`dir /s/b %PLUGIN_PATH%\*.jar`) do (
        jar tvf %%f > tmp_class_list.txt
        for /F "tokens=8" %%i in (tmp_class_list.txt) do echo [%%f] %%i >> %OUTPUT_FILE%
)
del tmp_class_list.txt

goto END

:USAGE
echo Usage: makelist.bat output_file
goto END

:PLUGIN_PATH_ERROR
echo プラグインのパスが存在しません: %PLUGIN_PATH%
goto END

:END

実行例

以下のようにmakelist.batを実行すると、list.txtに一覧が書き出されます。なおスクリプト内の変数PLUGIN_PATHは自分の環境に合うように適宜変更してください。

c:\> makelist.bat list.txt

list.txt

・・・省略・・・
[..\org.eclipse.jdt.core_2.1.3\jdtcore.jar] org/eclipse/jdt/internal/core/TypeConverter.class 
[..\org.eclipse.jdt.core_2.1.3\jdtcore.jar] org/eclipse/jdt/internal/core/TypeVector.class 
[..\org.eclipse.jdt.core_2.1.3\jdtcore.jar] org/eclipse/jdt/internal/core/Util.class 
[..\org.eclipse.jdt.core_2.1.3\jdtcore.jar] org/eclipse/jdt/internal/core/Util$Comparable.class 
[..\org.eclipse.jdt.core_2.1.3\jdtcore.jar] org/eclipse/jdt/internal/core/Util$1.class 
・・・省略・・・

出力されたファイルは、下のようなフォーマットで生成されます。

[jarファイル] jarに含まれるファイル

この一覧をテキストエディタで検索したり、findコマンドを使えばクラスファイルの居場所を突き止めることができます。たとえば、org.eclipse.jface.text.Documentクラスがどのjarファイルに含まれているかを調べるには、

c:\> find "org/eclipse/jface/text/Document.class" list.txt

---------- LIST.TXT
[C:\eclipse\plugins\org.eclipse.text_2.1.0\text.jar] org/eclipse/jface/text/Document.class

と表示されるので、text.jarに含まれているのが分かります。

参考リンク



最新更新日: 2005年5月9日
 
関連リンク
Eclipse API ドキュメント

- PR -

★☆当選☆★・・・すれば?現金100万円当ります!!

★ フルーツメール【毎日懸賞】好評実施中!デジカメや金券が当たる! ★ 毎日懸賞

■原石のままでは、終わりたくない貴方へ!キャリアアップ転職を成功へとナビゲート

秋葉原・なんば・名古屋・札幌に店舗を構えるパソコンショップ!【ツクモ】


Copyright(C) 2003,2004 Jasmin Project. All Right Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送