// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
[[Eclipse/プラグイン開発のTIPS集/ソースコードを解析するパーサASTParser]]でもちょっとやりましたが、パッケージ・エクスプローラからSelection経由でICompilationUnit((Javaのソースとかですね))を取得することができました。その
Javaソースは、何とかっていうJavaプロジェクトに属しているわけですが、Javaプロジェクト自体を操作するインタフェースもEclipseに用意されています。Javaプロジェクトを作成したり、削除したり、ソースを生成したりすることができるわけですね。以下にJavaプロジェクトを操作する方法をまとめておきます。


パッケージ・エクスプローラを見てもわかるとおり、Javaプロジェクトはツリー構造になってるわけで、よくあるコンポジットなパタンになってます。このコンポジットたち全部が拡張しているインタフェースが[[org.eclipse.jdt.core.IJavaElement>http://publib.boulder.ibm.com/infocenter/radhelp/v6r0m1/index.jsp?topic=/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/IJavaElement.html]]です。

**org.eclipse.jdt.core.IJavaElement [#ge8dcc8a]
全ての要素が拡張しているインタフェースですね。定数を見るとわかるのですが、コンポジットは
 int JAVA_MODEL = 1;
 int JAVA_PROJECT = 2;
 int PACKAGE_FRAGMENT_ROOT = 3;
 int PACKAGE_FRAGMENT = 4;
 int COMPILATION_UNIT = 5;
 int CLASS_FILE = 6;
 int TYPE = 7;
 int FIELD = 8;
 int METHOD = 9;
 int INITIALIZER = 10;
 int PACKAGE_DECLARATION = 11;
 int IMPORT_CONTAINER = 12;
 int IMPORT_DECLARATION = 13;
 int LOCAL_VARIABLE = 14;
 int TYPE_PARAMETER = 15;

くらい種類があるようです。


**org.eclipse.jdt.core.IJavaModel [#w8ab5b31]
ワークスペース内のJava要素のルートですね。IJavaElement#getJavaModel()で取得することができます。 


**org.eclipse.jdt.core.IJavaProject [#m6444966]
Javaプロジェクトです。 IJavaElement#getJavaProject() で取得することができます。よってコンポジットのどの要素からもJavaプロジェクトへの参照は得られるわけです。


**org.eclipse.jdt.core.IPackageFragmentRoot [#cf42b3a1]
Javaプロジェクト内のパッケージ階層のトップ要素です。たとえば
 IPackageFragmentRoot root = null;
 try {
   IJavaProject javaProject = element.getJavaProject();
   IPackageFragmentRoot[] roots = javaProject
       .getPackageFragmentRoots();
   for (IPackageFragmentRoot rootTmp : roots) {
     if (rootTmp.getKind() == IPackageFragmentRoot.K_SOURCE) {
       root = rootTmp;          ↑ソースディレクトリだったら
     }
   }
 } catch (JavaModelException e) {
   e.printStackTrace();
 }
などとしてソースディレクトリを取得することができます。

**org.eclipse.jdt.core.IPackageFragment[#mfd3abc7]

**org.eclipse.jdt.core.ICompilationUnit [#r9ed8ac6]



----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS