カテゴリー: JDT

「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(3)

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩



www.vogella.comのhttp://www.vogella.com/tutorials/EclipseJDT/article.html
紹介されていたチュートリアルを翻訳した。

ちなみASTのところは興味がなかったので試していない(ノ∀`)


5. ASTの使い方


以下の内容はワークスペース内の各ソースファイル用のASTを作成し、ASTを使用して各メソッドの名前と戻り値を出力します。

“Hello world”テンプレートを使用して、新しいプラグインプロジェクト
“de.vogella.jdt.astsimple”を作成します。

以下のプラグインの依存関係を整備します。


ASTについて情報を取得するには、あなたはVisitorパターンを使うことが出来ます。これはあなたが特定の要素用のASTへビジターを追加することを可能にします。このビジター内であなたはそのオブジェクトについての情報を捕捉し、ASTを処理した後にそれを戻すことが出来ます。この次のクラスを作成します。

package de.vogella.jdt.astsimple.handler;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.MethodDeclaration;

public class MethodVisitor extends ASTVisitor {
  List<MethodDeclaration> methods = new ArrayList<MethodDeclaration>();

  @Override
  public boolean visit(MethodDeclaration node) {
    methods.add(node);
    return super.visit(node);
  }

  public List<MethodDeclaration> getMethods() {
    return methods;
  }
} 

新しいコマンド”de.vogella.jdt.astsimple.GetInfo”を追加し、それをメニューへ入れます。

このコマンド用の以下のハンドラを作成します。

package de.vogella.jdt.astsimple.handler;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.MethodDeclaration;

public class GetInfo extends AbstractHandler {

  private static final String JDT_NATURE = "org.eclipse.jdt.core.javanature";

  @Override
  public Object execute(ExecutionEvent event) throws ExecutionException {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    // ワークスペース内の全てのプロジェクトを取得します。
    IProject[] projects = root.getProjects();
    // 全てのプロジェクトで繰り返します。
    for (IProject project : projects) {
      try {
        if (project.isNatureEnabled(JDT_NATURE)) {
          analyseMethods(project);
        }
      } catch (CoreException e) {
        e.printStackTrace();
      }
    }
    return null;
  }

  private void analyseMethods(IProject project) throws JavaModelException {
    IPackageFragment[] packages = JavaCore.create(project)
        .getPackageFragments();
    // parse(JavaCore.create(project));
    for (IPackageFragment mypackage : packages) {
      if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) {
        createAST(mypackage);
      }

    }
  }

  private void createAST(IPackageFragment mypackage)
      throws JavaModelException {
    for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
      // 今、ICompilationUnits用のASTを作成します。
      CompilationUnit parse = parse(unit);
      MethodVisitor visitor = new MethodVisitor();
      parse.accept(visitor);

      for (MethodDeclaration method : visitor.getMethods()) {
        System.out.print("Method name: " + method.getName()
            + " Return type: " + method.getReturnType2());
      }

    }
  }

  
/**
   * ICompilationUnitを読取り、
   * Javaソース・ファイル操作用のAST DOMを作成します。
   * 
   * @param unit
   * @return
   */


  private static CompilationUnit parse(ICompilationUnit unit) {
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    parser.setSource(unit);
    parser.setResolveBindings(true);
    return (CompilationUnit) parser.createAST(null); // パース
  }
} 

あなたのメニューへコマンドを追加します。あなたの新しいプラグインを実行し、新しいJavaプロジェクトを作成し、コマンドを選択します。
あなたが新しいプラグインを開始したIDE内でメソッドについての情報が出力されるはずです。

(後略)


サンプルの完全版等は元々のwww.vogella.comを参照のこと。
英語だけど読みやすく色々な種類のチュートリアルがあるので勉強するにはいいかも(・∀・)

わかんねーよ、バーヤ、バーヤヽ(`Д´)ノ

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩



というわけでウィザード絡みから一時撤退する… (ヽ’ω`)

AndroidネーチャーとJavaネーチャーとビルダーの設定は分かった。
AndroidManifest.xmlも作成したりもしたけど、

ビルド中にエラーが発生しました。
プロジェクト '<プロジェクト名>' でビルダー 'Android リソース・マネージャー' の実行中にエラーが発生しました。
java.lang.NullPointerException

というエラーが出てよくわからない。
ちょっと気力が尽きたので一旦この試みはストップする…_| ̄|○


折角学んだことをそのまま雲散霧消させてしまうのはあれなので
「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(1)のエントリと単純なウイザードの作成のページを書いた。

実りある内容であるかと言えば、翻訳と他の人の知識の寄せ集めなのでアレではあるが、
橋頭堡としての価値くらいにはなるであろう…(ヽ’ω`)


取り敢えずAndroidのプログラムに戻る。

「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(2)

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩



www.vogella.comのhttp://www.vogella.com/tutorials/EclipseJDT/article.html
紹介されていたチュートリアルを翻訳した。多少端折った部分と追加した部分がある。

追加部分の画像が多すぎて結局3分割になった(ノ∀`)


ハンドラーを以下の内容へ変更します。

package de.vogella.jdt.infos.handlers;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.text.Document;

public class SampleHandler extends AbstractHandler {

  public Object execute(ExecutionEvent event) throws ExecutionException {
    // ワークスペースのルートを取得します。
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    // ワークスペース内の全てのプロジェクトを取得します。
    IProject[] projects = root.getProjects();
    // 全てのプロジェクトでループします。
    for (IProject project : projects) {
      try {
        printProjectInfo(project);
      } catch (CoreException e) {
        e.printStackTrace();
      }
    }
    return null;
  }

  private void printProjectInfo(IProject project) throws CoreException,
      JavaModelException {
    System.out.println("Working in project " + project.getName());
    // Javaプロジェクトを持っているかチェックします
    if (project.isNatureEnabled("org.eclipse.jdt.core.javanature")) {
      IJavaProject javaProject = JavaCore.create(project);
      printPackageInfos(javaProject);
    }
  }

  private void printPackageInfos(IJavaProject javaProject)
      throws JavaModelException {
    IPackageFragment[] packages = javaProject.getPackageFragments();
    for (IPackageFragment mypackage : packages) {
      // Package fragmentsはクラスパス内の全てのパッケージを含みます。
      // このプログラムはソースフォルダのみを見ます
      // K_BINARYは更にJar(例えばrt.jar)を含みます。
      if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) {
        System.out.println("Package " + mypackage.getElementName());
        printICompilationUnitInfo(mypackage);

      }

    }
  }

  private void printICompilationUnitInfo(IPackageFragment mypackage)
      throws JavaModelException {
    for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
      printCompilationUnitDetails(unit);

    }
  }

  private void printIMethods(ICompilationUnit unit) throws JavaModelException {
    IType[] allTypes = unit.getAllTypes();
    for (IType type : allTypes) {
      printIMethodDetails(type);
    }
  }

  private void printCompilationUnitDetails(ICompilationUnit unit)
      throws JavaModelException {
    System.out.println("Source file " + unit.getElementName());
    Document doc = new Document(unit.getSource());
    System.out.println("Has number of lines: " + doc.getNumberOfLines());
    printIMethods(unit);
  }

  private void printIMethodDetails(IType type) throws JavaModelException {
    IMethod[] methods = type.getMethods();
    for (IMethod method : methods) {

      System.out.println("Method name " + method.getElementName());
      System.out.println("Signature " + method.getSignature());
      System.out.println("Return Type " + method.getReturnType());

    }
  }
}

プラグインを開始します。
(※)このプラグインを含んだ新しいeclipseが起動する。
jdttutorial021

新しいワークスペース内で2~3のプロジェクトを作成します。
それらの為の2~3のパッケージと2~3のJavaファイルを作成します。サンプルコマンドを指すメニューエントリを押します。
jdttutorial022

呼び出し側のワークベンチのコンソールビュー内で一覧にされたプロジェクト、パッケージ及びソースファイルを見られるはずです。
jdttutorial023


尚、マシンスペックが低いと処理途中で呼び出したeclipseがハングアップする場合がある。
下記の”PermGen Space Error”が出る場合はeclipse.iniに”-XX:MaxPermSize=128m”を
追加する必要がある模様。うちの環境ではそれでも駄目で”-XX:MaxPermSize=256m”に
しても駄目で、eclipse再起動でも駄目で、OS再起動後にようやく動いた…(ヽ’ω`)
色々と謎…
java.lang.OutOfMemoryError: PermGen space及びJava PermGenについて
PermGen Space Error


原文では4.1と4.2は新規にプラグインプロジェクトを作成する前提のようだが、
面倒臭いのでこのinfosプロジェクト内で動作確認をしてしまった(ノ∀`)
4.1を追加した手順は以下の通り。4.2も同様で出来るはず。細かいことを
気にせず動作確認をしたいだけなら、呼び出されるファイル内容を書き換える
だけでもいい筈。

  1. MANIFEST.MFの「拡張」タブを開き、「org.eclipse.ui.commands」を右クリック、
    コンテキストメニューから[新規]-[command]の順に選択。
    addpackage01
  2. 右側の拡張要素詳細の「id*」欄に”de.vogella.jdt.infos.commands.addPackage”、「name*」欄に”パッケージ追加”と入力。
    addpackage02
  3. 「org.eclipse.ui.handlers」を右クリック、コンテキストメニューから[新規]-[handler]の順に選択。
    addpackage03
  4. 右側の拡張要素詳細の
    「commandId*」欄に”de.vogella.jdt.infos.commands.addPackage”、
    「class」欄に”de.vogella.jdt.infos.handlers.AddPackage”と入力。
    addpackage04
  5. 「class」リンクをクリック。
    addpackage05
  6. <完了>をクリック。
    addpackage06
  7. 作成されたjavaファイルに以下のAddPackage.javaの内容を貼り付け。パッケージ宣言のみを”package de.vogella.jdt.infos.handlers;”に修正し保存
  8. 再びMNIFEST.MFの「拡張」タブに戻り、図のように「サンプル・メニュー」を右クリック、
    コンテキストメニューから[新規]-[command]の順に選択。
    addpackage07
  9. 右側の拡張要素詳細の「commandId*」欄に”de.vogella.jdt.infos.commands.addPackage”、「id」欄に”de.vogella.jdt.infos.menus.addPackage”と入力。
    addpackage08
  10. 全てを保存したことを確認し、「概要」タブの「Eclipse アプリケーションの起動」をクリック。
  11. メニューバーから[サンプル・メニュー]-[パッケージ追加]の順に選択。
    addpackage09
  12. プロジェクト名と同じ名前のパッケージが追加されていることを確認。
    addpackage10

4. プロジェクトの修正


4.1. Javaモデルによる新しいJava要素の作成

以下の内容はJavaプロジェクトと同じ名前を持つ、新しいパッケージを既存(かつオープン状態の)Javaプロジェクトへ作成するコマンドを作成します。
例えば、ワークスペース内に全くパッケージを持たない”de.vogella.test”というプロジェクトの場合、このコマンドはこのプロジェクト内に”de.vogella.test”パッケージを作成します。

新しいプラインプロジェクト”de.vogella.jdt.newelements”を作成します。新しいコマンド”de.vogella.jdt.newelements.AddPackage”を追加し、それをメニューへ入れます。

このコマンド用に以下のハンドラを作成します。
※原文try~catch文の閉じカッコ抜け?

package de.vogella.jdt.newelements.handler;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;

public class AddPackage extends AbstractHandler {

  @Override
  public Object execute(ExecutionEvent event) throws ExecutionException {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    // ワークスペース内の全てのプロジェクトを取得します。
    IProject[] projects = root.getProjects();
    // 全てのプロジェクトで繰り返します。
    for (IProject project : projects) {
      try {
        // Java ネーチャーを持つオープン状態のプロジェクトでのみ機能します。
        if (project.isOpen()
            & project.isNatureEnabled(JavaCore.NATURE_ID)) {
          createPackage(project);
        }
      } catch (CoreException e) {
        e.printStackTrace();
      }
    }
    return null;
  }

  private void createPackage(IProject project) throws JavaModelException {
    IJavaProject javaProject = JavaCore.create(project);
    IFolder folder = project.getFolder("src");
    // folder.create(true, true, null);
    IPackageFragmentRoot srcFolder = javaProject
        .getPackageFragmentRoot(folder);
    IPackageFragment fragment = srcFolder.createPackageFragment(project.getName(), true, null);
  }
} 

Tip
これはJavaプロジェクト名を持つパッケージをワークスペース内の開いているプロジェクト全てに追加します。
あなたが本当にこの動作を望んでいるか確認して下さい。またあなたはパッケージエクスプローラのコンテクストメニューにアクションを追加し、選択されたプロジェクトにのみそれを適用出来ます。あなたはそのやり方をパッケージエクスプローラの拡張で学ぶことが出来ます。”de.vogella.jdt.packageexplorer”プロジェクトのソースページ上に例があります。コマンドハンドラ”AddPackage.java”を見て下さい。

4.2. クラスパスの変更


また、あなたはプロジェクトのクラスパスを変更出来ます。以下のサンプルハンドラは”de.vogella.jdt.addclasspath”プロジェクトに含まれています。これはあなたのプロジェクトへJUnit4を追加します。
※原文 changeClassPath → changeClasspath

package de.vogella.jdt.addclasspath.handlers;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;

public class SampleHandler extends AbstractHandler {

  private static final String JDT_NATURE = "org.eclipse.jdt.core.javanature";

  
  public Object execute(ExecutionEvent event) throws ExecutionException {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    // ワークスペース内の全てのプロジェクトを取得します。
    IProject[] projects = root.getProjects();
    // 全てのプロジェクトで繰り返します。
    for (IProject project : projects) {
      try {
        // Java ネーチャーを持つオープン状態のプロジェクトでのみ機能します。
        if (project.isOpen() && project.isNatureEnabled(JDT_NATURE)) {
          changeClasspath(project);
        }
      } catch (CoreException e) {
        e.printStackTrace(); 
      }
    }
    return null;
  }
  
  private void changeClasspath(IProject project) throws JavaModelException {
    IJavaProject javaProject = JavaCore.create(project);
    IClasspathEntry[] entries = javaProject.getRawClasspath();
    IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];

    System.arraycopy(entries, 0, newEntries, 0, entries.length);

    // Pathを使用してコンテナへ新しいエントリを追加します。
    Path junitPath = new Path("org.eclipse.jdt.junit.JUNIT_CONTAINER/4");
    IClasspathEntry junitEntry = JavaCore
        .newContainerEntry(junitPath);
    newEntries[entries.length] = JavaCore
        .newContainerEntry(junitEntry.getPath());
    javaProject.setRawClasspath(newEntries, null);
  }
  
} 

「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(1)
「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(3)

「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(1)

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


www.vogella.comのhttp://www.vogella.com/tutorials/EclipseJDT/article.html
紹介されていたチュートリアルを翻訳した。多少端折った部分と追加した部分がある。


取り敢えずプラグインを幾つかインストールしていないといけないのだけれども、今ひとつ
どれが必須かよくわからないw「Pleiades All in one」の全部入りだったら[更新の確認]をして
“Eclipse プラットフォーム SDK”を追加インストールするだけで大丈夫だったような気も
したけれども、自信がない(ノ∀`) 取り敢えず下に示す5つが入っていれば動いた。
不要な物もあるかもしれないけれどもキニシナイ(゚ε゚)

  1. [新規ソフトウェアのインストール]を選択。
    jdttutorial001
  2. “すべての使用可能なサイト”を選択。
    jdttutorial002
  3. 下の4つと”Eclipse SDK”を選択。
    jdttutorial003
  4. <次へ>をクリック。
    jdttutorial004
  5. “使用条件の条項に同意します”を選択して、<完了>をクリック。
    jdttutorial005
  6. <はい>をクリック。
    jdttutorial006

1. Eclipse JDT

1.1. 概要


Eclipse Java開発ツール(JDT)はJavaのソースコードにアクセスして操作する為のAPIを提供します。これはワークスペース内の既存プロジェクトへのアクセス、新しいプロジェクトの作成、既存プロジェクトの修正及び読取りををすることが出来ます。これはさらにJavaプログラムを起動することが出来ます。

JDTは2つの方法でJavaのソースコードへアクセス出来ます。Java ModelとXML DOMと似たドキュメントオブジェクトモデルであるAbstract Syntax Tree (AST)です。

1.2 Java Model


各Javaプロジェクトはeclipseで内部的にJava Modelとして表されます。eclipseのJava Modelは軽量かつ耐障害性のあるJavaプロジェクトの表現です。

これはAbstract Syntax Tree(AST)ほど多くの情報を含みませんが、作成が高速です。例えば、アウトラインビューはその表現にJava Modelを使用しています:この形で、アウトラインビュー内の情報の素早い更新が可能になっています。

Java Modelはorg.eclipse.jdt.coreプラグイン内で定義されています。

Java Modelは以下の表によって説明出来るツリー構造として表現されます。

プロジェクト要素 Java Model要素 説明
Java プロジェクト IJavaProject 他のオブジェクト全てを含むJavaプロジェクト
srcフォルダ/binフォルダ/または外部ライブラリ IPackageFragmentRoot ソース又はバイナリファイルを保持します。フォルダまたはライブラリ(zip/jarファイル)になることが出来ます。
各パッケージ IPackageFragment 各パッケージはIPackageFragmentRoot以下に在ります。サブパッケージはパッケージの枝葉ではなく、IPackageFragmentRoot以下に直接?リストされます。
Javaソースファイル ICompilationUnit ソースファイルは常にパッケージノードの下に在ります。
タイプ/フィールド/メソッド IType / IField / IMethod タイプ、フィールド及びメソッド

1.3. Abstract Syntax Tree (AST) アブストラクトシンタックスツリー


ASTはJavaソースコードのツリー構造の詳細表現です。ASTはソースコードを修正、作成、読取り及び削除する為のAPIを定義します。

ASTの主要なパッケージはorg.eclipse.jdt.core.domと呼ばれ、org.eclipse.jdt.coreプラグイン内に位置します。

各JavaソースファイルはASTNodeクラスのサブクラスとして表現されます。
具体的なASTノードはそれぞれ、それが表すオブジェクトについての具体的な情報を提供します。例えば、あなたは (メソッドについての)MethodDeclaration, (変数宣言についての)VariableDeclarationFragment及び(Javaキーワードではないあらゆる文字列についての)SimpleName を持ちます。

ASTは通常、Java ModelのICompilationUnitに基いて作成されます。

2.前提条件


この記事はあなたがelipseプラグイン開発に精通していることを前提としています。eclipseプラグイン開発の導入を見て下さい。ユーザーインターフェイスに関したアクティビティ(例えばビュー拡張ポインの作成)についてはeclipse RCPチュートリアルを見て下さい。
 

3. JDT Java モデルを用いたJavaプロジェクトへのアクセス

以下の内容は、JDT Java Model APIを使用することによってワークスペースのプロジェクトを読み取り、それらのプロジェクトの全てのパッケージとJavaのソースファイルを取得し、それらの全てのメソッドを読み取るコマンドを作成します

“de.vogella.jdt.infos”という名前のプラグインプロジェクトを作成します。テンプレートとして”Hello World, コマンド”を選択します。

以下の依存関係をあなたのプラグインへ追加します:

org.eclipse.core.resources
org.eclipse.jdt
org.eclipse.jdt.core
org.eclipse.core.runtime
org.eclipse.jdt.ui
org.eclipse.jface.text

  1. ツールバーの<新規>をクリック。
    jdttutorial025
  2. “プラグイン・プロジェクト”を選択して<次へ>をクリック。
    jdttutorial024
  3. プロジェクト名に”de.vogella.jdt.infos”を入力して<次へ>をクリック。
    jdttutorial007
  4. <次へ>をクリック。
    jdttutorial010
  5. “Hello, world コマンド”を選択して<完了>をクリック。
    jdttutorial011
  6. プロジェクトが作成され、MANIFEST.MFが表示されます。
    jdttutorial012
  7. 「依存関係」タブをクリックし、<追加>をクリック。
    jdttutorial013
  8. 上記で指定された6つのプラグインを追加。
    jdttutorial014
    jdttutorial015
    jdttutorial016
    jdttutorial017
    jdttutorial018
    jdttutorial026
  9. 全て追加したことを確認したら、一回保存。
    jdttutorial019

    保存していないと後でSampleHandler.javaに内容を貼り付けた時に以下のようなエラーが出る。
    jdttutorial020


長いので分割した(ノ∀`) 続く

「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(2)
「Eclipse JDT – Abstract Syntax Tree (AST) and the Java Model – Tutorial」を翻訳した(3)