【Eclipse】ソースファイルおよびJavadocの関連付け

Eclipse

外部ライブラリの情報

Eclipseで外部ライブラリに含まれるクラスを参照して開発を行う場合、クラスパスの設定を行う必要があります。

外部ライブラリのクラスパス設定について詳細手順はこちらです。

ただし、この手動で行うクラスパスの設定は、あくまで外部ライブラリ(フォルダ・ZIP・JAR)に含まれるクラスファイルを参照し、最低限プログラムの実行に必要な設定を行うためのものです。追加でソースファイルやJavadocの設定を行うことで、より開発に役立つ情報を得られるようになります。

例えば こちらのコード例 では、クラスパスの設定だけを行った場合、次のようにソースコードやJavadocを確認することができません。

例えば ArrayUtilsisEmpty 部分にカーソルを当てて F3 を押下すると、ArrayUtils を開くことができますが、これはクラスファイルのためソースコードを確認することはできません。

クラスファイルとは こちら に記載の通り人間には読むことのできないバイナリファイルであるため、このような表示となります。

例えば ArrayUtilsisEmpty 部分にカーソルを当てると、ポップアップ表示で引数や戻り値の確認はできますが、完全なJavadocは見ることができません。

クラスパス設定で追加するライブラリには、実行に必要なクラスファイルのみが含まれており、ドキュメント情報は含まれないためです。

そこで、このような場合にソースコードやJavadocを確認できるよう、ソースファイルの関連付けJavadocの関連付け について、ここからはそれぞれの設定手順を見ていきます。

ソースファイルの関連付け

ここからソースファイルの関連付けを行っていきますが、ここで注意が必要なのは、対象のクラスファイルを逆コンパイルしているわけではないという点です。これはあくまで、別の場所に配置されたソースファイルと関連付けることにより、参照されたクラスファイルをあたかもソースファイルであるかのように閲覧できるようにする機能に過ぎません。

そのため、まずは関連付けるためのソースファイルが必要になります。例えば Apache Commons Lang の場合、Download Apache Commons Lang から「Binaries」をダウンロードして解凍すると、commons-lang3-3.18.0-sources.jar というJARが含まれています。クラスパスの設定と同様、ソースファイルの関連付けの場合も、フォルダ・ZIP・JARの中から選択できるため、この sources.jar を使用します。

具体的な設定手順は次の通りです。

Slide
Slide
Slide
Slide
Slide
Slide
previous arrowprevious arrow
next arrownext arrow

この手順では、クラスパス設定でのワークスペース内の場合のように、関連付けたいソースファイルのフォルダ・ZIP・JARが同じワークスペース内に配置されている場合を例に挙げました。ソースファイルの関連付けも、クラスパス設定手順と同様、ワークスペース外(PC内の任意の場所)を選択することが可能です。その場合は、External location を選択することでフォルダ選択画面が表示されます。

また、関連付けが完了していない状態で開かれた Class File Editor の[Attach Source..]ボタン押下によっても、同様のウィンドウが開かれ、設定を行うことが可能です。

また 前述 の通り、この機能は単なる関連付けであり、クラスファイルを逆コンパイルしているわけではないため、関連付けられたソースファイルの内容とクラスファイルのプログラムが同じであることは保証されません。

例えば次のように、一度コンパイルしたクラスファイルにパスを通し、別の場所に配置されたソースファイルを関連付けていたとします。この時、関連付けているソースファイルの変更がクラスファイルに取り込まれるようなことは決してありません。そのため例えば、ソースファイルを変更した一方でパスを通した先のクラスファイルが更新されないままだと、実際に実行されているプログラムと関連付けにより見えているソースファイルの内容が異なり、混乱の原因となり得ます。

Slide
Slide
Slide
previous arrowprevious arrow
next arrownext arrow

ちなみにこの例では暫定的な回避策として、最新のクラスファイルが常に binディレクトリ に出力されることを利用し、フォルダ指定の手順に沿って次のようにlibraryプロジェクトのbinディレクトリへ直接クラスパスを通すことで、関連付けられたソースファイルと同期を取ることが可能です。

こちらでも説明している通り、Apache Commons Lang ではダウンロードできるZIPとして「Binaries」の他に「Source」も用意されており、commons-lang3-3.18.0-src.zip を解凍すると、同じようにソースファイルを確認することができます。

Source からダウンロードできる commons-lang3-3.18.0-src.zip には、例えば pom.xml のようなビルドに必要なファイルなど、Apache Commons Lang 自体をプロジェクトとしてワークスペースに配置し、開発を行う際に必要となる物が全て含まれています。

一方 Binariescommons-lang3-3.18.0-bin.zip に含まれる commons-lang3-3.18.0-sources.jar は、クラスファイルに対応する最低限のソースファイルのみがJARファイルとしてまとめられており、解凍せず主にソースの関連付け等に使用されることが想定されています。

Javadocの関連付け

Javadocの関連付けについても、ソースファイルの手順のほとんど同じです。Apache Commons Lang の例では、commons-lang3-3.18.0-bin.zipcommons-lang3-3.18.0-javadoc.jar が含まれているため、このJARファイルを対象に設定を行います。設定対象として、ワークスペース内または任意の外部フォルダおよびアーカイブファイル(ZIP・JAR)を選択できる点も同様です。

具体的な設定手順は次の通りです。

Slide
Slide
Slide
Slide
Slide
Slide
previous arrowprevious arrow
next arrownext arrow

Apache Commons Lang の commons-lang3-3.18.0-bin.zip を解凍すると、commons-lang3-3.18.0-javadoc.jar とは別に、apidocs というディレクトリも含まれていることが分かります。中身は javadoc.jar と同一で、Javadocに関連するHTMLファイル一式が含まれています。前述 の通りJavadoc設定にはJARだけでなくフォルダも選択可能なため、こちらを指定することも可能です。

IDE設定用のアーカイブファイルとは別に、ブラウザで閲覧可能な形式として展開済みのディレクトリが同梱されているという見方が出来ます。

Mavenプロジェクトの場合

ここまでのようにソースファイルやJavadocの関連付け設定が必要なのは、あくまで 前述 の通り手動でクラスパスの設定を行った場合に限ります。例えばMavenプロジェクトの場合、pom.xml に依存関係を追加しておけば、クラスパス設定と併せてソースファイルの関連付けまでが行われます。

これはローカルリポジトリ( /.m2/repository )を見ると分かりますが、ライブラリ本体の commons-lang3-3.17.0.jar とは別に commons-lang3-3.17.0-sources.jar も含まれており、これが自動で追加されるためです。そのため手動での関連付け設定は不要となります。