JDT の FAQ

ワークベンチでは、組み込まれている Java コンパイラー以外の Java コンパイラー (例えば、javac) を使用することはできるでしょうか?

いいえ。 JDT は、完全自動インクリメンタル再コンパイル、コードのスニペットの評価、コード・アシスト、型階層、およびホット・コード置換を含む、多数の高度なフィーチャーを備えています。これらのフィーチャーは、ワークベンチの Java コンパイラー (JDT のインクリメンタル・プロジェクト・ビルダーに不可欠のパーツ) に含まれている特殊なサポートを必要としますが、標準の Java コンパイラーにはこれらのサポートがありません。

Java パッケージはどこから生成されるのですか?

プロジェクトにはファイルとフォルダーしか含まれていません。 Java パッケージという概念は、Java プロジェクトのクラスパスによって導入されたものです (ユーザー・インターフェースでは、パッケージ・エクスプローラーは、クラスパスによって定義された通りにパッケージを表示します)。 ヒント: パッケージ構造が予想していたものではない場合は、クラスパスを確認してください。Java の検索インフラストラクチャーは、クラスパス上の Java 要素の宣言と、Java 要素からの参照しか検索しません。

内部の JAR ライブラリー・ファイルと外部の JAR ライブラリー・ファイルはどのような場合に使用するのでしょうか?

内部リソースは、ワークベンチ内のあるプロジェクトに常駐しているため、ワークベンチによって管理されます。他のリソースと同様、これらのリソースもワークベンチによってバージョン管理されます。外部リソースは、ワークベンチの一部ではないため、参照によってのみ使用することができます。例えば、JRE は多くの場合外部にあり、非常に大きなものなので、それを VCM システムに関連付ける必要はありません。

Java プロジェクト内のソース・フォルダーはどのような場合に使用するのでしょうか?

各 Java プロジェクトは、その Java ソース・ファイルをプロジェクトのクラスパス上の 1 つ以上のソース・タイプ・エントリーを介して見つけます。ソース・フォルダーは、大きなプロジェクトのパッケージを使いやすいグループに編成する場合、またはソース・コードを同じプロジェクト内の別のファイルから分離する場合に使用します。また、ビルド・パスに置く必要のないファイル (例えば、ドキュメンテーション) がある場合にも、ソース・フォルダーを使用します。

ソース添付とは何でしょうか? どのようにして定義するのでしょうか?

ライブラリーは、バイナリー・クラス・ファイル (おそらくは他のリソースも) を含む JAR ファイルとして保管されます。これらのバイナリー・クラス・ファイルは、パッケージ、クラス、メソッド、およびフィールドのシグニチャー情報を提供します。この情報はコンパイルと実行には十分なものですが、そこに含まれているオリジナル・ソース・コードに関する情報はわずかなものです。バイナリー・ライブラリーのブラウズとデバッグをさらに容易にするために、対応するソースの JAR (または Zip) ファイルをバイナリーの JAR ファイルに関連付けるためのメカニズムがあります。

なぜすべてのリソースが出力フォルダー (例えば bin) に複製されるのですか?

Java プロジェクトがソース・フォルダーを使用している場合は、プロジェクト内のソース・ファイルのコンパイル中に Java コンパイラーは、Java 以外のリソースも出力フォルダーにコピーして、実行プログラムのクラスパスでそれらのリソースが使用可能になるようにします。あるリソースが出力ロケーションにコピーされないようにするために、Java コンパイラーの設定 (「ウィンドウ」>「設定」>「Java」>「コンパイラー」>「ビルド」) でリソース・フィルターを設定できます。

ドキュメンテーション・ファイルがプロジェクトの出力フォルダーにコピーされないようにするにはどのようにすればよいのでしょうか?

ソース・フォルダーを使用して、出力フォルダーにコピーしないリソースを、クラスパスに含まれていない個別のフォルダーに入れてください。また、Java コンパイラーの設定 (「ウィンドウ」>「設定」>「Java」>「コンパイラー」> 「ビルド」) のリソース・フィルターを *.doc などに設定することもできます。

デフォルト・パッケージはどのようにして作成するのでしょうか?

その必要はありません。ソース・フォルダーまたはプロジェクトのルート・フォルダー内のファイルは、デフォルト・パッケージ内にあると見なされます。実際に、すべてのソース・フォルダーには、デフォルト・パッケージのフラグメントを持つ機能があります。

リファクタリングとは

リファクタリングとは、振る舞いを保持したままプログラムを変換することを意味します。 JDT は、「Refactoring: Improving the Design of Existing Code」(Martin Fowler 著、Addison Wesley 刊、1999 年) で解説されている多くの変換をサポートしています。

コードの選択/コードの解決 (F3) はどのような場合に使用するのでしょうか?

コンパイラーを使用して、ソース範囲に対応する Java 要素を見つけ出すために使用します。

Java プログラム情報 (例えば、型階層、宣言、参照) は、Java ビルダーで作成されるのですか? 自動ビルドがオフの場合でもその情報は更新されますか?

Java プログラム情報は、Java ビルダーには依存しません。リソース変更または Java 操作を行うと、自動的に更新されます。特に、Java ツールが提供しているすべての機能 (例えば、型階層、コード・アシスト、検索) は、自動ビルドがオフでも正確に動作し続けます。例えば、ビルダーをオフにする必要のある重いリファクタリングを実行しているときでも、コード・アシストを使用することができます。コード・アシストは (まだビルドされていない) 最新の変更を反映します。プログラムの起動 (つまり、実行とデバッグ) 以外で、Java ビルダーを必要とする機能は、コードのスニペットの評価だけです。

ワークベンチを再度開いた後で、Java ソース・ファイルの編集後に最初に行うビルドが、時間がかかりすぎるように思われます。なぜでしょうか?

Java インクリメンタル・プロジェクト・ビルダーは、ワークベンチを閉じるときにその内部状態をファイルに保管します。そのプロジェクトを再度開いた後、最初にビルドを行うと、Java インクリメンタル・プロジェクト・ビルダーは、その内部状態を復元します。このファイルが大きい場合、通常より長いビルド遅延が発生します。

自分のクラスの型階層を表示することができません。どうすればいいでしょうか?

クラスパスのビルドが正しく設定されているかどうか確認してください。 Java 開発においては、適切なクラスパスのビルドのセットアップは重要なタスクです。正しいビルド・パスがないと、コードをコンパイルすることはできません。 Java 要素を型階層で検索したり、調べたりすることもできません。

「自動コンパイル」をオフにして、必要に応じて手動でコンパイルを行うにはどのようにすればよいのでしょうか?

「ワークスペース」設定ページを開く一般」>「ワークスペース設定ページの「自動的にビルド」チェック・ボックスをクリアします。ビルドを行いたいときは、Ctrl+B を押すか、またはメニュー・バーから「プロジェクト」>「すべてビルド」を選択してください。

ヒント: 「自動コンパイル」をオフにして手動でビルドを行うときは、 「ワークスペース」設定ページを開く一般」>「ワークスペース設定ページの「ビルド前に自動的に保管」チェック・ボックスを選択することもできます。

「アウトライン」ビューでメソッドまたはフィールドを選択しても、エディターにはその要素のソースしか表示されません。ファイル全体のソースを表示するにはどのようにすればよいでしょうか?

ツールバー・ボタン「選択された要素のソースのみを表示」を押さないままにしてください。

ソース・フォルダーはネストできますか?

はい。除外フィルターを使用して、ネストされたソース・フォルダーを作成できます。

ソース・フォルダーごとに別々の出力フォルダーを持つことはできますか?

はい。Java プロジェクトの 「Java のビルド・パス」>「ソース」プロパティー・ページで「ソース・フォルダーに出力フォルダーを許可」チェック・ボックスを選択してください。

ワークスペースの外側に配置された出力フォルダーまたはソース・フォルダーを持つことはできますか?

はい。目的のロケーションを指すリンクされたフォルダーを作成して、そのフォルダーを Java プロジェクトのソース・フォルダーまたは出力フォルダーとして使用してください。

関連概念

Java 開発ツール (JDT)

関連参照

「Java のビルド・パス」ページ
JDT 用語集