javadoc(1) 基本ツール javadoc(1)

# 名前

javadoc - Javaソース・ファイルから、APIドキュメントのHTMLページを生成します。

# 概要

```
javadoc {packages|source-files} [options] [@argfiles]
```

*packages*

**java.lang java.lang.reflect java.awt**など、空白で区切ってドキュメント化するパッケージの名前。サブパッケージもドキュメント化する場合は、**-subpackages**オプションを使用してパッケージを指定します。

デフォルトでは、**javadoc**は、現在のディレクトリおよびサブディレクトリで指定されたパッケージを探します。**-sourcepath**オプションを使用して、パッケージを探すディレクトリのリストを指定します。

*source-files*

**Class.java Object.java Button.java**のように空白で区切った、ドキュメント化するJavaソース・ファイルの名前。デフォルトでは、**javadoc**は、現在のディレクトリで指定されたクラスを探します。ただし、**/home/src/java/awt/Graphics\*.java**のように、クラス・ファイルのフルパスを指定し、ワイルドカード文字を使用できます。現在のディレクトリからの相対パスも指定できます。

*options*

空白で区切られたコマンド行オプション。オプションを参照してください。

*@argfiles*

**javadoc**コマンド・オプション、パッケージ名およびソース・ファイル名のリストを任意の順序で含むファイルの名前。

# 説明

**javadoc**コマンドは、一連のJavaソース・ファイルにある宣言およびドキュメンテーション・コメントを解析し、デフォルトでは、publicクラス、protectedクラス、ネストされたクラス(匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて記述した一連のHTMLページを生成します。**javadoc**コマンドは、APIドキュメントの生成や、一連のソース・ファイルの実装ドキュメントの生成に使用できます。

**javadoc**コマンドは、パッケージ全体、個々のソース・ファイル、またはその両方に対して実行できます。パッケージ全体のドキュメント化を行うには、**-subpackages**オプションを使用してディレクトリおよびそのサブディレクトリを再帰的にたどるか、パッケージ名の明示的なリストを渡します。個々のソース・ファイルをドキュメント化するには、Javaソース・ファイル名のリストを渡します。簡単な例を参照してください。

## ソース・ファイルの処理

**javadoc**コマンドは、ソースで終わるファイル、およびソース・ファイルで説明しているその他のファイルを処理します。個々のソース・ファイル名を渡して**javadoc**を実行する場合、どのソース・ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。パッケージ名を渡すほうが簡単だからです。ソース・ファイル名を明示的に指定しなくても、**javadoc**コマンドは3つの方法で実行できます。パッケージ名を渡し、**-subpackages**オプションを使用するか、またはソース・ファイル名にワイルドカードを使用することができます。これらの場合、**javadoc**コマンドがソース・ファイルの処理を行うのは、そのファイルが次のすべての要件を満たす場合のみです。

•ファイル名の接頭辞(**.java**を削除)が有効なクラス名である。

•ソース・ツリーのルートからの相対的なパス名が、区切り文字をドットに変換すると、有効なパッケージ名になる。

•パッケージ文に有効なパッケージ名が含まれている。

リンクの処理

処理の実行中に、**javadoc**コマンドは、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、相互参照リンクを追加します。リンクは、次の場所に表示されます。@タグの説明については、javadocタグを参照してください。

•宣言(戻り値の型、引数の型、フィールドの型)。

•**@see**タグから生成された*「関連項目」*セクション。

•**{@link}**タグから生成されたインライン・テキスト。

•**@throws**タグから生成された例外の名前。

•インタフェースのメンバーに対する*「定義」*リンクと、クラスのメンバーに対する*「オーバーライド」*リンク。メソッド・コメントの継承を参照してください。

•パッケージ、クラス、およびメンバーをリストしているサマリー表。

•パッケージおよびクラスの継承ツリー。

•索引。

コマンド行で指定しなかったクラスについての既存のテキスト(別に生成したテキスト)に対してリンクを追加するには、**-link**および**-linkoffline**オプションを利用できます。

処理の詳細

**javadoc**コマンドは実行するたびに1つの完全なドキュメントを生成します。前の実行の結果を変更または直接取り込む、増分ビルドを行いません。ただし、**javadoc**コマンドは、他の実行の結果にリンクできます。

**javadoc**コマンドの実装にはJavaコンパイラが必要で、Javaコンパイラに依存しています。**javadoc**コマンドは**javac**コマンドの一部を呼び出し、宣言をコンパイルして、メンバーの実装を無視します。**javadoc**コマンドは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、HTMLを生成します。さらに、J**javadoc**コマンドは、ソース・コードのドキュメンテーション・コメントから、ユーザーの提供したドキュメントも取得します。ドキュメンテーション・コメントを参照してください。

**javadoc**コマンドは、メソッド本体を持たない純粋なスタブ・ファイルであるソース・ファイルに対して実行できます。したがって、APIの実装前の設計の早い段階で、ドキュメンテーション・コメントを記述して**javadoc**コメントを実行できます。

コンパイラに依存することによって、HTML出力は、実際の実装に正確に対応します。実際の実装は、明示的なソース・コードにではなく、暗黙のソース・コードに依存する場合があります。たとえば、**javadoc**コマンドは、コンパイル済クラス・ファイルには存在するがソース・コードには存在しないデフォルト・コンストラクタをドキュメント化します。

多くの場合、**javadoc**コマンドでは、ソース・ファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。すべてのデバッグやトラブルシューティングを完了する前にドキュメントを生成できます。**javadoc**コマンドはドキュメンテーション・コメントの基本的なチェックを行います。

**javadoc**コマンドは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、 **javadoc**コマンドは、ブートストラップ・クラス、拡張機能、またはユーザー・クラスにかかわらず、すべての参照クラスを検索できる必要があります。クラスの検出方法 (http://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html)を参照してください

通常、作成するクラスは、拡張クラスとして、または**javadoc**コマンドのクラス・パスでロードされる必要があります。

## [Javadocのドックレット](#Javadoc)

**javadoc**コマンドの出力の内容と形式は、ドックレットを使用してカスタマイズできます。**javadoc**コマンドには、標準ドックレットと呼ばれるデフォルトの組込みドックレットがあります。標準ドックレットは、HTML形式のAPIドキュメントを生成します。標準ドックレットを修正またはサブクラスを作成することや、HTML、XML、MIF、RTFなどの好みの出力形式を生成する独自のドックレットを記述することも可能です。

**-doclet**オプションでカスタム・ドックレットが指定されていない場合、**javadoc**コマンドは、デフォルトの標準ドックレットを使用します。**javadoc**コマンドには、使用されているドックレットに関係なく使用できるいくつかのオプションがあります。標準ドックレットでは、これらの他に、いくつかのコマンド行オプションが追加されます。オプションを参照してください。

# ソース・ファイル

**javadoc**コマンドは、次のタイプのソース・ファイルから出力を生成します。そのファイルは、クラスのJava言語ソース・ファイル(**.java**)、パッケージ・コメント・ファイル、概要コメント・ファイル、およびその他の未処理のファイルです。ここでは、ドキュメント化しないがソース・ツリーに存在する場合があるテスト・ファイルやテンプレート・ファイルについても説明します。

## クラスのソース・ファイル

それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーション・コメントを持つことができ、それをソース・ファイル内に保持します。ドキュメンテーション・コメントを参照してください。

## パッケージ・コメント・ファイル

それぞれのパッケージは、独自のドキュメンテーション・コメントを持つことができ、それを専用のソース・ファイルに保持します。その内容は、**javadoc**コマンドによって生成されるパッケージのサマリー・ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。

パッケージ・コメント・ファイルを作成するには、次のいずれかのファイルにコメントを格納できます。

•**package-info.java**ファイルには、パッケージ宣言、パッケージ注釈、パッケージ・コメント、およびJavadocタグを格納できます。このファイルが優先されます。

•**package.html**ファイルには、パッケージ・コメントとJavadocタグのみを格納できます。パッケージ注釈は格納できません。

各パッケージは、**package.html**ファイルまたは**package-info.java**ファイルのいずれかを1つ持つことができますが、その両方を持つことはできません。このどちらかのファイルをソース・ファイルとともに、ソース・ツリー内のそのパッケージ・ディレクトリ内に配置してください。

package-info.javaファイル

**package-info.java**ファイルには、次の構造のパッケージ・コメントを含めることができます。コメントは、パッケージ宣言の前に配置されます。

**注意:** コメント区切り文字である**/\*\***および**\*/**が存在する必要がありますが、中間の行の先頭のアスタリスクは省略可能です。

```
/**
 * Provides the classes necessary to create an  
 * applet and the classes an applet uses 
 * to communicate with its applet context.
 * <p>
 * The applet framework involves two entities:
 * the applet and the applet context.
 * An applet is an embeddable window (see the
 * {@link java.awt.Panel} class) with a few extra
 * methods that the applet context can use to 
 * initialize, start, and stop the applet.
 *
 * @since 1.0
 * @see java.awt
 */
package java.lang.applet;


 
```

package.htmlファイル

**package.html**ファイルには、次の構造のパッケージ・コメントを含めることができます。コメントは、**&lt;body&gt;**要素に配置されます。

ファイル: **java/applet/package.html**

```
<HTML>
<BODY>
Provides the classes necessary to create an applet and the 
classes an applet uses to communicate with its applet context.
<p>
The applet framework involves two entities: the applet
and the applet context. An applet is an embeddable
window (see the {@link java.awt.Panel} class) with a
few extra methods that the applet context can use to
initialize, start, and stop the applet. 


 
@since 1.0 
@see java.awt
</BODY>
</HTML>


 
```

**package.html**ファイルは通常のHTMLファイルであり、パッケージ宣言を含んでいません。パッケージ・コメント・ファイルの内容はHTMLで記述しますが、例外が1つあります。このドキュメンテーション・コメントには、コメント区切り文字である**/\*\***と**\*/**、または行頭のアスタリスクを含めない、という点です。コメントを書く場合は、最初の文をパッケージのサマリーとし、**&lt;body&gt;**タグと最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージ・タグを含めることができます。すべてのブロック・タグは、主説明の後に配置する必要があります。**@see**タグをパッケージ・コメント・ファイルに追加する場合には、完全修飾名を使用する必要があります。

コメント・ファイルの処理

**javadoc**コメントを実行すると、パッケージ・コメント・ファイルが検索されます。パッケージ・コメント・ファイルが見つかった場合は、**javadoc**コマンドは次の手順を実行します。

•処理できるようにコメントをコピーします。package.htmlの場合、**javadoc**コマンドは、**&lt;body&gt;**と**&lt;/body&gt;** HTMLタグ間ですべてのコンテンツをコピーします。**&lt;title&gt;**タグ、ソース・ファイルの著作権文または他の情報を配置する**&lt;head&gt;**セクションを含めることができますが、これらは生成されたドキュメントに表示されません。

•パッケージ・タグを処理します。パッケージ・タグを参照してください。

•処理したテキストを生成されたパッケージのサマリー・ページの下部に挿入します。Javaプラットフォーム、Standard Edition API仕様の概要 (http://docs.oracle.com/javase/8/docs/api/overview-summary.html)を参照してください

•パッケージのサマリー・ページの先頭に、パッケージ・コメントの最初の文をコピーします。さらに、**javadoc**コマンドは、概要ページのパッケージ・リストに、パッケージ名とパッケージ・コメントの最初の文を追加します。Javaプラットフォーム、Standard Edition API仕様の概要 (http://docs.oracle.com/javase/8/docs/api/overview-summary.html)を参照してください

文の終わりは、クラスやメンバーの主説明の最初の文の終わりと同じルールによって判断されます。

## 概要コメント・ファイル

ドキュメント化する各アプリケーションまたはパッケージ・セットは、独自の概要ドキュメンテーション・コメントを持つことができ、それは専用のソース・ファイルに保持されます。その内容は、**javadoc**コマンドによって生成される概要ページに組み込まれます。このコメントには、通常、アプリケーションまたはパッケージ・セット全体に当てはまるドキュメントを記述します。

このファイルにはoverview.htmlなどの名前を付けることができ、どこに配置してもかまいません。一般的な場所は、ソース・ツリーの最上部です。

たとえば、**java.applet**パッケージのソース・ファイルが/home/user/src/java/appletディレクトリに格納されている場合、概要コメント・ファイルは/home/user/src/overview.htmlに作成できます。

異なるパッケージのセットに対して**javadoc**コマンドを複数回実行する場合は、同じ1つのソース・ファイルのセットに対して複数の概要コメント・ファイルを作成できます。たとえば、内部ドキュメント用に**-private**を指定して**javadoc**コマンドを1回実行した後、公開ドキュメント用にそのオプションを指定しないで再度実行することができます。この場合、各概要コメント・ファイルの1文目で、そのドキュメントを公開用または内部用として記述できます。

概要コメント・ファイルの内容は、HTMLで記述された1つの大きなドキュメンテーション・コメントです。最初の文はアプリケーションまたはパッケージのセットのサマリーとします。**&lt;body&gt;**タグと最初の文の間にタイトルやその他のテキストを含めないようにします。{**@link}**などのインライン・タグを除くすべてのタグは、主説明の後に配置する必要があります。**@see**タグを追加する場合には、完全修飾名を使用する必要があります。

**javadoc**コマンドの実行時に、**-overview**オプションを使用して概要コメント・ファイル名を指定します。このファイルは、パッケージ・コメント・ファイルと同じように処理されます。**javadoc**コマンドは次の手順を実行します。

•**&lt;body&gt;**と**&lt;/body&gt;**タグ間で、処理するすべてのコンテンツをコピーします。

•概要タグがあれば処理します。概要タグを参照してください。

•処理したテキストを生成された概要ページの下部に挿入します。JavaプラットフォームStandard Edition API仕様の概要 (http://docs.oracle.com/javase/8/docs/api/overview-summary.html)を参照してください

•概要サマリー・ページの先頭に、概要コメントの最初の文をコピーします。

## 未処理のファイル

ソース・ファイルには、**javadoc**コマンドによって宛先ディレクトリにコピーされる、任意のファイルを含めることができます。このようなファイルには、通常、グラフィック・ファイル、サンプルのJavaソースおよびクラス・ファイル、一般的なJavaソース・ファイルのドキュメンテーション・コメントの影響を受けない多くの内容を含む独立したHTMLファイルなどがあります。

未処理のファイルを含めるには、doc-filesというディレクトリにファイルを配置します。doc-filesディレクトリは、ソース・ファイルを含む任意のパッケージ・ディレクトリのサブディレクトリになることができます。doc-filesサブディレクトリは、パッケージごとに1つ用意できます。

たとえば、ボタンのイメージを**java.awt.Button**クラスのドキュメントに含める場合には、そのイメージ・ファイルを/home/user/src/java/awt/doc-files/ディレクトリに置きます。doc-filesディレクトリを/home/user/src/java/doc-filesに置かないでください。javaはパッケージではないからです。ソース・ファイルを含めることもできません。

**javadoc**コマンドはファイルを参照しないので、未処理のファイルへのすべてのリンクは、コードに含まれている必要があります。**javadoc**コマンドはディレクトリとそのすべての内容を宛先にコピーします。次の例では、Button.javaドキュメンテーション・コメントのリンクがどのように見えるかを示しています。

```
/**
 * This button looks like this: 
 * <img src="doc-files/Button.gif">
 */


 
```

## テストおよびテンプレート・ファイル

ソース・ツリーのテストおよびテンプレート・ファイルを、ソース・ファイルが存在するディレクトリまたはサブディレクトリと同じディレクトリに格納できます。テストおよびテンプレート・ファイルが処理されるのを防ぐには、**javadoc**コマンドを実行し、明示的に個別のソース・ファイル名を渡します。

テスト・ファイルは、有効な、コンパイル可能なソース・ファイルです。テンプレート・ファイルは、有効な、互換性のあるソース・ファイルではありませんが、多くの場合、**.java**接尾辞を持っています。

テスト・ファイル

テスト・ファイルを、名前なしパッケージや、ソース・ファイルが存在するパッケージとは別のパッケージに属するようにする場合、テスト・ファイルをソース・ファイルの下のサブディレクトリに配置し、そのディレクトリに無効な名前を付けます。テスト・ファイルをソースと同じディレクトリに配置し、パッケージ名を示すコマンド行引数を指定して**javadoc**コマンドを呼び出すと、テスト・ファイルは警告またはエラーを引き起こします。ファイルが無効な名前を持つサブディレクトリ内に存在する場合、テスト・ファイル・ディレクトリはスキップされ、エラーまたは警告は発行されません。たとえば、ソース・ファイルのテスト・ファイルをcom.package1に追加するには、無効なパッケージ名のサブディレクトリに配置します。次のディレクトリ名にはハイフンが含まれているため無効です。

```
com/package1/test-files/


 
```

テスト・ファイルにドキュメンテーション・コメントが含まれる場合、**javadoc**コマンドの個別の実行で、ワイルドカードを含んだテスト・ソース・ファイル名(**com/package1/test-files/\*.java**など)を渡して、テスト・ファイルのドキュメントを生成するように設定できます。

テンプレート・ファイル

テンプレート・ファイルをソース・ディレクトリに配置するが、**javadoc**コマンドを実行するときにエラーを生成しない場合、ファイルに**Buffer-Template.java**などの無効な名前を付けて、処理させないようにします。**javadoc**コマンドは、接尾辞の**.java**が削除されると有効なクラス名になる名前を持つソース・ファイルのみを処理します。

# 生成されるファイル

デフォルトでは、**javadoc**コマンドは、HTML形式のドキュメントを生成する標準ドックレットを使用します。標準ドックレットは、ここで説明する、基本内容ページ、相互参照ページ、サポート・ページを生成します。各HTMLページは個別のファイルに対応します。**javadoc**コマンドは、2つのタイプのファイルを生成します。最初のタイプには、クラスおよびインタフェースに応じた名前が付けられます。2番目のタイプには、最初のタイプのファイルとの競合を防ぐために、ハイフンが含まれます(package-summary.htmlなど)。

## 基本内容ページ

•記載されているクラスまたはインタフェースごとに1つのクラスまたはインタフェース・ページ(classname.html)。

•記載されているパッケージごとに1つのパッケージ・ページ(package-summary.html)。**javadoc**コマンドは、ソース・ツリーのパッケージ・ディレクトリ内にあるpackage.htmlまたはpackage-info.javaという名前のファイル内のHTMLテキストをすべて組み入れます。

•パッケージのセット全体に対して1つの概要ページ(overview-summary.html)。概要ページは、生成ドキュメントの先頭ページになります。**javadoc**コマンドは、**-overview**オプションで指定されたファイル内のHTMLテキストをすべて組み入れます。概要ページが作成されるのは、**javadoc**コマンドに複数のパッケージ名を渡した場合のみです。HTMLフレームおよびオプションを参照してください。

## 相互参照ページ

•パッケージのセット全体に対して1つのクラス階層ページ(overview-tree.html)。階層ページを表示するには、ナビゲーション・バーの「概要」をクリックしてから、「階層ツリー」をクリックします。

•パッケージごとに1つのクラス階層ページ(package-tree.html)。階層ページを表示するには、特定のパッケージ、クラス、またはインタフェースのページに移動し、「階層ツリー」をクリックしてそのパッケージの階層を表示します。

•パッケージごとに1つの使用ページ(package-use.html)と、クラスおよびインタフェースごとに1つずつの使用ページ(class-use/classname.html)。使用ページでは、指定したクラス、インタフェース、またはパッケージの一部を使用しているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドについて記述されます。たとえば、クラスまたはインタフェースAを例にすると、その使用ページには、Aのサブクラス、Aとして宣言されたフィールド、Aを返すメソッド、A型のパラメータを持つメソッドおよびコンストラクタが組み込まれます。使用ページを表示するには、パッケージ、クラス、またはインタフェースに移動し、ナビゲーション・バーの「使用」リンクをクリックします。

•すべての非推奨APIとその推奨する代替をリストする非推奨APIページ(deprecated-list.html)。非推奨APIは将来の実装で削除される可能性があるので使用しないでください。

•定数フィールドの値用の定数フィールド値ページ(constant-values.html)。

•直列化された形式ページ(serialized-form.html)。フィールドおよびメソッドの説明を含む、直列化可能かつ外部化可能なクラスに関する情報用のページです。このページ内の情報は、APIを使用する開発者ではなく、再実装者に必要な情報です。直列化された形式ページへアクセスするには、直列化されたクラスに移動して、そのクラス・コメントにある「関連項目」セクションで「直列化された形式」をクリックします。標準ドックレットは直列化された形式ページを生成します。このページには、Serializableを実装するすべてのクラス(publicまたは非public)が、その**readObject**や**writeObject**メソッド、直列化されたフィールド、および**@serial**、**@serialField**、**@serialData**タグからのドキュメンテーション・コメントとともにリストされます。直列化可能なpublicクラスを除外するには、そのクラス(またはそのパッケージ)を**@serial** excludeでマークします。直列化可能なpackage-privateクラスを含めるには、そのクラス(またはそのパッケージ)を**@serial** includeでマークします。リリース1.4では、**-private**オプションを指定せずに**javadoc**コマンドを実行することにより、publicクラスおよびprivateクラスの完全に直列化された形式を生成できます。オプションを参照してください。

•索引ページ(**index-\*.html**)。すべてのクラス名、インタフェース名、コンストラクタ名、フィールド名、およびメソッド名がアルファベット順に並んでいます。索引ページは、Unicodeを扱えるように国際化されています。1つのファイルとして生成することも、先頭文字(英語の場合A–Z)ごとに別々のファイルとして生成することもできます。

## サポート・ページ

•ヘルプ・ページ(help-doc.html)。ナビゲーション・バーや前述の各ページに関する説明が記載されています。デフォルトのヘルプ・ファイルを独自のカスタム・ヘルプ・ファイルでオーバーライドするには、**-helpfile**を使用します。

•表示用のHTMLフレームを作成する1つのindex.htmlファイル。フレーム付きの先頭ページを表示するにはこのファイルをロードします。index.htmlファイルには、テキスト・コンテンツは含まれていません。

•複数のフレーム・ファイル(**\*-frame.html**)。パッケージ、クラス、およびインタフェースのリストが含まれています。フレーム・ファイルはHTMLフレームを表示します。

•パッケージ・リスト・ファイル(package-list)。**-link**および**-linkoffline**オプションで使用されます。パッケージ・リスト・ファイルはテキスト・ファイルであり、どのリンクからもアクセスできません。

•スタイルシート・ファイル(stylesheet.css)。生成されるページの一部の要素について色、フォント・ファミリ、フォント・サイズ、フォント・スタイル、および配置を制御します。

•doc-filesディレクトリ。宛先ディレクトリにコピーするイメージ、サンプル・コード、ソース・コードなどのファイルが格納されます。これらのファイルは、**javadoc**コマンドによって処理されません。このディレクトリは、ソース・ツリーの中に存在する場合にのみ処理されます。

オプションを参照してください。

## [HTMLフレーム](#HTML)

**javadoc**コマンドは、コマンドに渡された値に基づき、最小限必要な数(2または3)のフレームを生成します。**javadoc**コマンドに引数として1つのパッケージ名または1つのパッケージに含まれるソース・ファイルを渡す場合は、パッケージのリストが省略されます。そのかわりに、**javadoc**コマンドは左側の列に1つのフレームを作成し、クラスのリストを表示します。複数のパッケージ名を渡した場合は、**javadoc**コマンドは、すべてのパッケージをリストする第3のフレームと概要ページ(overview-summary.html)を作成します。フレームを省略するには、「フレームなし」リンクをクリックするか、overview-summary.htmlページからページ・セットを表示します。

## 生成されるファイルの構造

生成されるクラス・ファイルおよびインタフェース・ファイルは、Javaソース・ファイルおよびクラス・ファイルと同じディレクトリ階層に編成されます。1つのサブパッケージにつき1つのディレクトリ、という構造になります。

たとえば、**java.applet.Applet**クラス用に生成されるドキュメントは、java/applet/Applet.htmlに格納されます。

生成先ディレクトリの名前が**apidocs**だとすると、**java.applet**パッケージのファイルの構造は、次のとおりです。前述のように、*frame*という語を名前に含むファイルは、すべて左上または左下のフレームに表示されます。それ以外のHTMLファイルは、すべて右側のフレームに表示されます。

ディレクトリは太字です。アスタリスク(\*)は、**javadoc**コマンドへの引数がパッケージ名ではなくソース・ファイル名である場合に省略されるファイルおよびディレクトリを示しています。引数がソース・ファイル名の場合、空のパッケージ・リストが作成されます。doc-filesディレクトリは、ソース・ツリー内に存在する場合にのみ、生成先に作成されます。生成されるファイルを参照してください。

•**apidocs**: 最上位レベル・ディレクトリ

•index.html: HTMLフレームを設定する初期ページ

•\*overview-summary.html: パッケージ・リストとサマリー

•overview-tree.html: すべてのパッケージのクラス階層

•deprecated-list.html: すべてのパッケージの非推奨API

•constant-values.html: すべてのパッケージの静的フィールド値

•serialized-form.html: すべてのパッケージの直列化されたフォーム

•\*overview-frame.html: 左上のフレームに表示するすべてのパッケージ

•allclasses-frame.html: 左下のフレームに表示するすべてのクラス

•help-doc.html: Javadocページの編成に関するヘルプ

•index-all.html: **-splitindex**オプションなしで作成されたデフォルトの索引

•**index-files**: **-splitindex**オプションを指定して作成されたディレクトリ

•index-&lt;number&gt;.html: **-splitindex**オプションを指定して作成された索引ファイル

•package-list: 外部参照を解決するためのパッケージ名

•stylesheet.css: フォント、色、位置などを定義します

•**java**: パッケージ・ディレクトリ

•**applet**: サブパッケージ・ディレクトリ

•Applet.html: **Applet**クラス・ページ

•AppletContext.html: **AppletContext**インタフェース

•AppletStub.html: **AppletStub**インタフェース

•AudioClip.html: **AudioClip**インタフェース

•package-summary.html: クラスとサマリー

•package-frame.html: 左下のフレームに表示するパッケージ・クラス

•package-tree.html: このパッケージのクラス階層

•package-use.html: このパッケージが使用される場所

•**doc-files**: イメージおよびサンプル・ファイルのディレクトリ

•**class-use**: イメージおよびサンプル・ファイルの場所

\- Applet.html: Appletクラスの使用

\- AppletContext.html: **AppletContext**インタフェースの使用

\- AppletStub.html: **AppletStub**インタフェースの使用

\- AudioClip.html: **AudioClip**インタフェースの使用

•**src-html**: ソース・コード・ディレクトリ

•**java**: パッケージ・ディレクトリ

•**applet**: サブパッケージ・ディレクトリ

\- Applet.html: Appletソース・コード

\- AppletContext.html: **AppletContext**ソース・コード

\- AppletStub.html: **AppletStub**ソース・コード

\- AudioClip.html: **AudioClip**ソース・コード

## 生成されるAPI宣言

**javadoc**コマンドは、それぞれのクラス、インタフェース、フィールド、コンストラクタ、およびメソッドの記述の最初に、そのAPI用の宣言を生成します。たとえば、**Boolean**クラスの宣言は、次のようになります。

```
public final class Boolean
extends Object
implements Serializable


 
```

**Boolean.valueOf**メソッドの宣言は次のとおりです。

```
public static Boolean valueOf(String s)


 
```

**javadoc**コマンドは、修飾子**public**、**protected**、**private**、**abstract**、**final**、**static**、**transient**、および**volatile**を含めることができますが、**synchronized**および**native**はできません。**synchronized**および**native**修飾子は、実装の詳細とみなされているため、API仕様には含まれません。

APIでは、並行性セマンティクスについて、キーワード**synchronized**に依存するのではなく、コメントの主説明としてドキュメント化する必要があります。たとえば、「1つのenumerationを複数のスレッドから並行して使用することはできない」のように記述します。ドキュメントには、これらのセマンティクスを実現する方法を記述しないでください。たとえば、**Hashtable**オプションはスレッドセーフである必要がありますが、「エクスポートされるすべてのメソッドを同期化してそれを実現する」のように指定する根拠はありません。より高度な並行性のために、バケット・レベルで内部的に同期化する権限を保有しておくことをお薦めします。

# ドキュメンテーション・コメント

このセクションでは、ソース・コードのコメントとコメントの継承について説明します。

## ソース・コード・コメント

ソース・コードの任意のクラス、インタフェース、メソッド、コンストラクタ、またはフィールドの宣言の前に、ドキュメンテーション・コメントを記述することができます。各パッケージにもドキュメンテーション・コメントを作成できます。構文は若干異なりますが、概要にもドキュメンテーション・コメントを作成できます。ドキュメンテーション・コメントは、**/\*\***と、終わりを表す**\*/**の間にある文字から構成されます。先頭のアスタリスクは各行で使用でき、次の項で詳しく説明します。コメントのテキストは、複数行にわたって記述できます。

```
/**
 * This is the typical format of a simple documentation comment
 * that spans two lines.
 */


 
```

スペースを節約するには、コメントを1行に入れます。

```
/** This comment takes up only one line. */


 
```

コメントの配置

ドキュメンテーション・コメントは、クラス、インタフェース、コンストラクタ、メソッド、またはフィールド宣言の直前に配置される場合にのみ認識されます。メソッドの本体に置かれているドキュメンテーション・コメントは無視されます。**javadoc**コマンドは、宣言文ごとに1つのドキュメンテーション・コメントしか認識しません。タグを使用できる場所を参照してください。

よくある間違いは、クラス・コメントとクラス宣言の間に**import**文を置いてしまうことです。**javadoc**コマンドはクラス・コメントを無視するので、**import**文をこの場所に配置しないでください。

```
/**
 * This is the class comment for the class Whatever.
 */
 
import com.example;   // MISTAKE - Important not to put import statement here
 
public class Whatever{ }


 
```

コメントのパーツ

ドキュメンテーション・コメントには、主説明とその後に続くタグ・セクションが含まれます。主説明は、開始区切り文字**/\*\***で始まり、タグ・セクションまで続きます。タグ・セクションは、先頭文字が**@**の行で定義される最初のブロック・タグから始まります(先頭のアスタリスク、空白文字、先頭の区切り文字**/\*\***は除く)。主説明を記述せず、タグ・セクションのみのコメントを記述することもできます。主説明は、タグ・セクション以降に続けることはできません。タグの引数は、複数行にわたって記述できます。タグの数に制限はありません。何回も記述できるタグと、1回しか記述できないタグがあります。たとえば、次の**@see**タグからタグ・セクションは始まります。

```
/**
 * This sentence holds the main description for this documentation comment.
 * @see java.lang.Object
 */


 
```

ブロックおよびインライン・タグ

タグは、**javadoc**コマンドが処理するドキュメンテーション・コメント内の特殊なキーワードです。タグには2つのタイプがあります。1つは**@tag**タグのように表記されるブロック・タグ(スタンドアロン・タグとも呼ばれる)、もう1つは**{@tag}**タグのように中カッコで囲んで表記されるインライン・タグです。ブロック・タグが解釈されるには、行頭のアスタリスク、空白文字、区切り文字(**/\*\***)を除いて、行の先頭に置く必要があります。これは、**@**文字をテキスト内の別の場所で使用しても、タグの開始として解釈されないことを意味しています。**@**文字を使用して行を開始しても、それが解釈されないようにするには、HTMLエンティティ**&#064;**を使用します。それぞれのブロック・タグには、関連付けられたテキストがあります。このテキストは、タグの後から、次のタグの前、またはドキュメンテーション・コメントの最後までの間に記述されたテキストです(タグまたはコメント区切り文字を除く)。この関連テキストは、複数行にわたって記述できます。インライン・タグは、テキストを記述できる場所であればどこにでも置くことができ、解釈されます。次の例にはブロック・タグ**@deprecated**とインライン・タグ**{@link}**が含まれています。javadocタグを参照してください。

```
/**
 * @deprecated  As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)}
 */


 
```

HTMLでのコメントの記述

テキストはHTMLエンティティとHTMLタグを使用してHTMLで記述される必要があります。使用するブラウザがサポートする任意のHTMLのバージョンを使用できます。標準ドックレットは、カスケーディング・スタイル・シートおよびフレームを含め、ドキュメンテーション・コメント以外の部分でHTML 3.2に準拠したコードを生成します。フレーム・セットのため、生成されたファイルにはHTML 4.0が推奨されます。

たとえば、より小さい記号(&lt;)およびより大きい記号(&gt;)のエンティティは、**&lt;**および**&gt;**と記述する必要があります。同様に、アンパサンド(&)は**&amp;**と記述する必要があります。次の例では、太字のHTMLタグ**&lt;b&gt;**を使用しています。

```
/**
 * This is a <b>doc</b> comment.
 * @see java.lang.Object
 */


 
```

先頭のアスタリスク

**javadoc**コマンドによるドキュメンテーション・コメントの解析時に、各行の先頭にあるアスタリスク(\*)文字は破棄されます。最初のアスタリスク(\*)文字より前にある空白やタブも破棄されます。行頭のアスタリスクを省略した場合、インデントを保持したままでサンプル・コードを**&lt;PRE&gt;**タグ内のドキュメンテーション・コメントに直接貼り付けられるように、先頭の空白文字は削除されなくなります。ブラウザは、空白文字をタブよりも一律に解釈します。インデントの起点は(区切り文字**/\*\***または**&lt;PRE&gt;**タグではなく)左マージンになります。

最初の文

各ドキュメンテーション・コメントの最初の文は、宣言されているエンティティに関する簡潔かつ完全なサマリー文である必要があります。この文は、空白、タブ、または行終了文字が続く最初のピリオド、または最初のブロック・タグがある位置で終わります。最初の文は、**javadoc**コマンドによってHTMLページの先頭にあるメンバーのサマリーの部分にコピーされます。

複数フィールドの宣言

Javaプラットフォームでは、1つの文で複数のフィールドを宣言できます。ただし、この文には、1つのドキュメンテーション・コメントしか記述できません。そのコメントが、すべてのフィールドに対してコピーされます。フィールドごとにドキュメンテーション・コメントを記述する必要がある場合は、各フィールドを別々の文で宣言する必要があります。たとえば、次のドキュメンテーション・コメントは、1つの宣言として記述すると不適切です。この場合は、宣言を2つに分けることをお薦めします。

```
/** 
 * The horizontal and vertical distances of point (x,y)
 */
public int x, y;      // Avoid this 
 
```

**javadoc**コマンドは、上のコードから次のようなドキュメントを生成します。

```
public int x


 
```

The horizontal and vertical distances of point (x, y).

```
public int y


 
```

The horizontal and vertical distances of point (x, y).

ヘッダー・タグの使用

メンバーに対してドキュメンテーション・コメントを記述するときには、**&lt;H1&gt;**および**&lt;H2&gt;**などのHTML見出しタグを使用しないことをお薦めします。**javadoc**コマンドは、完全な構造化ドキュメントを作成するので、このような構造化タグが使用されていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しを使用して独自の構造を指定してかまいません。

## メソッド・コメントの継承

**javadoc**コマンドでは、クラスおよびインタフェースでメソッド・コメントを継承して、欠落したテキストを入力したり、明示的にメソッド・コメントを継承することができます。コンストラクタ、フィールド、およびネストされたクラスは、ドキュメンテーション・コメントを継承しません。

**注意:** ドキュメンテーション・コメントをコピーに利用するには、継承したメソッドのソース・ファイルが**-sourcepath**オプションで指定したパスのみに置かれている必要があります。コマンド行で、クラスもパッケージも渡す必要はありません。この点はリリース1.3.*n*以前とは対照的です。これまでは、クラスがドキュメント化されるクラスであることが必要でした。

欠落テキストの入力

主説明、または**@return**、**@param**、**@throws**タグがメソッド・コメントから欠落している場合、**javadoc**コマンドは、対応する主説明またはタグ・コメントを、それがオーバーライドまたは実装しているメソッド(ある場合)からコピーします。メソッド・コメントの継承を参照してください。

特定のパラメータの**@param**タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の**@throws**タグが見つからない場合、その例外が宣言されている場合にかぎり、**@throws**タグがコピーされます。

この動作はリリース1.3以前の動作とは対照的です。これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。

javadocタグおよびオプションを参照してください。

明示的な継承

**{@inheritDoc}**インライン・タグをメソッドの主説明または**@return**、**@param**、**@throws**タグ・コメントに挿入します。対応する継承された主説明またはタグ・コメントは、その場所にコピーされます。

## クラスおよびインタフェースの継承

コメントの継承は、クラスおよびインタフェースからの継承の、考えられるすべての場合に発生します。

•クラスのメソッドがスーパークラスのメソッドをオーバーライドしている場合

•インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている場合

•クラスのメソッドがインタフェースのメソッドを実装している場合

最初の2つのケースでは、**javadoc**コマンドは、オーバーライドしているメソッドのドキュメント内に*「オーバーライド」*という小見出しを生成します。コメントが継承されているかどうかにかかわらず、オーバーライドされているメソッドへのリンクが含まれます。

3つ目のケース(特定のクラスのメソッドがインタフェースのメソッドを実装している場合)では、**javadoc**コマンドは、オーバーライドしているメソッドのドキュメント内に*「定義」*という小見出しを生成します。コメントが継承されているかどうかにかかわらず、実装されているメソッドへのリンクが含まれます。

## メソッド・コメントのアルゴリズム

メソッドにドキュメンテーション・コメントがない、または**{@inheritDoc}**タグがある場合、**javadoc**コマンドは次のアルゴリズムを使用して適用できるコメントを検索します。アルゴリズムは、最も特定される適用可能なドキュメンテーション・コメントを探し、スーパークラスよりもインタフェースを優先するように設計されています。

1.直接に実装されている(または、拡張されている)インタフェースを、メソッドの宣言で**implements**(または**extends**)という語の後に出現する順序で、1つずつ調べます。このメソッドについて最初に見つかったドキュメンテーション・コメントを採用します。

2.手順1でドキュメンテーション・コメントが見つからなかった場合は、直接実装されている(または、拡張されている)インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用します(その際の順序は、手順1でインタフェースを調べたときの順序と同じ)。

3.手順2でドキュメンテーション・コメントが見つからなかった場合で、このクラスが**Object**以外のクラスであるが、インタフェースではない場合は、次のように処理します。

1.スーパークラスにこのメソッドについてのドキュメンテーション・コメントが記述されている場合は、そのコメントを採用します。

2.手順3aでドキュメンテーション・コメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を再帰的に適用します。

# [JAVADOCタグ](#JAVADOC)

**javadoc**コマンドは、Javaのドキュメンテーション・コメント内に埋め込まれた特別なタグを解析します。**javadoc**タグを使用すると、完全な整形式のAPIをソース・コードから自動的に生成できます。タグはアットマーク記号(**@**)で始まり、大文字と小文字が区別されます。これらのタグは、表示されているとおりに大文字と小文字を使用して入力する必要があります。タグは、行の先頭(先頭の空白文字と省略可能なアスタリスクの後)に置く必要があります。そうしないと、テキストとして扱われます。慣例として、同じ名前のタグは1箇所にまとめます。たとえば、**@see**タグが複数ある場合は、すべて同じ場所にまとめて配置します。詳細は、タグを使用できる場所を参照してください。

タグには、次のタイプがあります。

•ブロック・タグ: ブロック・タグは主説明に続くタグ・セクション内にのみ配置します。ブロック・タグは、*@tag*の形式をとります。

•インライン・タグ: インライン・タグは主説明内またはブロック・タグのコメント内の任意の場所に配置します。インライン・タグは*{@tag}*のように中カッコで囲みます。

カスタム・タグについては、-tag tagname:Xaoptcmf:"taghead"を参照してください。タグを使用できる場所も参照してください。

## タグの説明

@author *name-text*

JDK 1.0で導入

**-author**オプションが使用されている場合、指定した名前のテキストの作成者エントリを生成されるドキュメントに追加します。1つのドキュメンテーション・コメントに複数の**@author**タグを含めることができます。1つの**@author**タグに1つの名前を指定することも、複数の名前を指定することもできます。前者の場合は、**javadoc**コマンドによって名前と名前の間にカンマ(,)と空白文字が挿入されます。後者の場合は、テキスト全体が解析されることなく、生成ドキュメントにコピーされます。したがって、カンマではなく、各言語に対応した名前区切り文字を使用する必要があるときに、1行に複数の名前を指定できます。JavadocツールでのDocコメントの記述方法の@authorに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@author)を参照してください。

{@code *text*}

JDK 1.5で導入

**&lt;code&gt;{@literal}&lt;/code&gt;**と同じです。

テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textをコード・フォントで表示します。これにより、ドキュメンテーション・コメントでは、パラメータの型(**&lt;Object&gt;**)、不等号(**3 &lt; 4**)、矢印(**&lt;-**)などで、通常の山カッコ(&lt;および&gt;)をHTMLエンティティ(**&lt;**および**&gt;**)のかわりに使用できます。たとえば、ドキュメンテーション・コメント・テキスト**{@code A&lt;B&gt;C}**は、**A&lt;B&gt;C**として変更されずに生成されたHTMLページに表示されます。つまり、**&lt;B&gt;**が太字として解釈されず、そのフォントはコード・フォントになります。コード・フォントなしで同じ機能を実現するには、**{@literal}**タグを使用します。

@deprecated *deprecated-text*

JDK 1.0で導入

このAPIは動作し続けますが、このAPIを使用しないことを薦めるコメントを追加します。**javadoc**コマンドは、**deprecated-text**を主説明の前に移動してイタリックにし、その前に太字の警告「推奨されていません。」を追加します。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。

非推奨テキストの最初の文では、そのAPIが推奨されなくなった時期と、代替として使用するAPIをユーザーに提示する必要があります。**javadoc**コマンドは、この最初の文を、サマリー・セクションと索引にコピーします。その後の文で非推奨になった理由を説明することもできます。代替APIを指し示す**{@link}**タグ(Javadoc 1.2以降の場合)を含める必要があります。

*@deprecated annotation*タグを使用してプログラム要素を非推奨にします。APIを非推奨にする方法と時期 (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/deprecation/deprecation.html)を参照してください。

JavadocツールでのDocコメントの記述方法の@deprecatedに関する項

(http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@deprecated)も参照してください。

{@docRoot}

JDK 1.3で導入

生成されるページからの、生成ドキュメントの(生成先)ルート・ディレクトリへの相対パスを表します。このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。通常は、各ページの最下部から著作権のページにリンクします。

この**{@docRoot}**タグは、コマンド行でもドキュメンテーション・コメント内でも使用できます。このタグは、任意のタグ(**@return**、**@param**および**@deprecated**タグなど)のテキスト部分を含む、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。

•コマンド行で、header、footerまたはbottomが定義されている場合、**javadoc -bottom '&lt;a href="{@docRoot}/copyright.html"&gt;Copyright&lt;/a&gt;'**となります。

**{@docRoot}**タグをmakefile内でこのように利用する場合、一部の**makefile**プログラムでは、中カッコ**{}**文字を特別にエスケープする必要があります。たとえば、Inprise MAKEバージョン5.2をWindows上で実行する場合は、**{{@docRoot}}**のように、中カッコを二重にする必要があります。**-bottom**オプションなどのオプションへの引数を囲むのに、二重(一重ではなく)引用符も必要です(**href**引数を囲む引用符は省略)。

•ドキュメンテーション・コメントでは

```
/**
 * See the <a href="{@docRoot}/copyright.html">Copyright</a>.
 */


 
```

このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。式: **&lt;a href="{@docRoot}/copyright.html"&gt;**は、**java/lang/Object.java**の場合**&lt;a href="../../copyright.html"&gt;**に、**java/lang/ref/Reference.java**の場合**&lt;a href="../../../copyright.html"&gt;**に解決されます。

@exception *class-name description*

JDK 1.0で導入

**@throws**タグと同じです。@throws class-name descriptionを参照してください。

{@inheritDoc}

JDK 1.4で導入

最も近い継承可能なクラスまたは実装可能なインタフェースから、このタグの位置にある現在のドキュメンテーション・コメントに、ドキュメントを継承(コピー)します。これにより、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使用して記述することができます。

このタグは、ドキュメンテーション・コメントの次の位置でのみ有効です。

•メソッドの主説明ブロック内。この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされます。

•メソッドの**@return**、**@param**、**@throws**タグのテキスト引数内。この場合、タグ・テキストは、上位階層の対応するタグからコピーされます。

継承階層でコメントを見つける方法に関する説明は、メソッド・コメントの継承を参照してください。このタグが見つからない場合、コメントは、この項で説明するルールに応じて、自動的に継承されるかどうかが決まります。

{@link *package.class#member label*}

JDK 1.2で導入

表示テキストlabelとともにインライン・リンクを挿入します。labelは、参照クラスの指定されたパッケージ、クラス、またはメンバーの名前のドキュメントを指し示します。このタグは、**@return**、**@param**および**@deprecated**タグなどの任意のタグのテキスト部分を含む、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。JavadocツールでのDocコメントの記述方法の@linkに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#{@link)を参照してください。

このタグは**@see**タグに似ています。どちらのタグも、**package.class#member**と**label**の参照方法と、有効な構文が同じです。主な違いは、**{@link}**タグでは、「関連項目」セクションにリンクが配置されるかわりに、インライン・リンクが生成されるという点です。インライン・テキストの他の部分と区別するために、**{@link}**タグの最初と最後に中カッコを記述します。ラベル内で右中カッコ(**}**)を使用する必要がある場合、HTMLエンティティ記法**&#125;**を使用します。

1つ文の中で使用できる**{@link}**タグの数に制限はありません。このタグは、ドキュメンテーション・コメントの主説明部分、または**@deprecated**、**@return**、**@param**タグなどの任意のタグのテキスト部分で使用できます。

たとえば、次のコメントでは**getComponentAt(int,int)**メソッドを参照しています。

```
Use the {@link #getComponentAt(int, int) getComponentAt} method.


 
```

標準ドックレットでは、このコードから次のHTMLが生成されます(このコメントが同じパッケージの別のクラスを参照している場合)。

```
Use the <a href="Component.html#getComponentAt(int, int)">getComponentAt</a> method.


 
```

前の行は、次のようにWebページに表示されます。

```
Use the getComponentAt method.


 
```

{@linkplain *package.class#member label*}

JDK 1.4で導入

**{@link}**タグと同じ動作をしますが、リンク・ラベルがコード・フォントではなくプレーン・テキストで表示される点が異なります。ラベルがプレーン・テキストで記述されていると便利です。たとえば、「**Refer to {@linkplain add() the overridden method}**.」は「Refer to the overridden method」と表示されます。

{@literal *text*}

JDK 1.5で導入

テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textを表示します。これにより、ドキュメンテーション・コメントでは、パラメータの型(**&lt;Object&gt;**)、不等号(**3 &lt; 4**)、矢印(&lt;-)などで、山カッコ(**&lt;および&gt;**)をHTMLエンティティ(**&lt;**および**&gt;**)のかわりに使用できます。たとえば、ドキュメンテーション・コメント・テキスト**{@literal A&lt;B&gt;C}**は、**A&lt;B&gt;C**としてブラウザの生成されたHTMLページで変更されずに表示されます。**&lt;B&gt;**は太字として解釈されません(コード・フォントになりません)。コード・フォントで同じ機能を実現するには、**{@code}**タグを使用します。

@param *parameter-name description*

JDK 1.0で導入

「パラメータ」セクションに、指定された**parameter-name**の後に指定されたdescriptionを続けてパラメータを追加します。ドキュメンテーション・コメントを記述するときには、descriptionを複数行にわたって記述することもできます。このタグは、メソッド、コンストラクタ、またはクラスのドキュメンテーション・コメント内でのみ有効です。JavadocツールでのDocコメントの記述方法の@paramに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@param)を参照してください。

**parameter-name**は、メソッドまたはコンストラクタでのパラメータの名前か、クラス、メソッドまたはコンストラクタの型パラメータの名前になります。山カッコでこのパラメータ名を囲み、型パラメータを使用することを指定します。

クラスの型パラメータの例:

```
/**
 * @param <E> Type of element stored in a list
 */
public interface List<E> extends Collection<E> {
}


 
```

メソッドの型パラメータの例:

```
/**
 * @param string  the string to be converted
 * @param type    the type to convert the string to
 * @param <T>     the type of the element
 * @param <V>     the value of the element
 */
<T, V extends T> V convert(String string, Class<T> type) {
}


 
```

@return *description*

JDK 1.0で導入

「戻り値」セクションを追加して、descriptionのテキストを書き込みます。このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。このタグは、メソッドのドキュメンテーション・コメントでのみ有効です。JavadocツールでのDocコメントの記述方法の@returnに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@return)を参照してください。

@see *reference*

JDK 1.0で導入

*「関連項目」*見出しを追加して、referenceを指すリンク、またはテキスト・エントリを書き込みます。1つのドキュメンテーション・コメントには任意の数の**@see**タグを含めることができますが、それらはすべて同じ見出しの下にグループ化されます。**@see**タグには、3つのタイプの形式があります。この形式が最も一般的です。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドで有効です。パッケージ、クラス、またはメンバーに対するインライン・リンクを文中に挿入する方法は、**{@link}**を参照してください。

**形式1**。@see **string**タグ形式は、*string*のテキスト・エントリを追加します。リンクは生成されません。stringは、書籍またはURLではアクセスできない情報の参照先です。**javadoc**コマンドは、最初の文字として二重引用符(")を検索して、この形式を前述の形式と区別します。たとえば、**@see "The Java Programming Language"**は次のテキストを生成します。

**関連項目**:

"The Java Programming Language"

**形式2**。**@see &lt;a href="URL#value"&gt;label&lt;/a&gt;**フォームは、**URL#value**で定義されているようにリンクを追加します。**URL#value**パラメータは、相対URLまたは絶対URLです。**javadoc**コマンドは、最初の文字として「より小さい」記号(**&lt;**)を検索して、この形式を他の形式と区別します。たとえば、**@see &lt;a href="spec.html#section"&gt;Java Spec&lt;/a&gt;**は、次のリンクを生成します:

**関連項目**:

Java Spec

**形式3**。**@see package.class#member label**形式は、表示テキスト・ラベルとともにリンクを追加します。このラベルは参照されているJava言語の指定された名前のドキュメントを指し示します。ラベルはオプションです。ラベルを省略した場合は、表示テキストのかわりに、名前が適切に短縮されて表示されます。**-noqualifier**オプションを使用すると、この表示テキストからパッケージ名が全体的に削除されます。ラベルは、自動生成される表示テキストとは異なる表示テキストにする場合に使用します。「名前が表示される方法」を参照してください。

Java SE 1.2だけは、ラベルではなく名前が**&lt;code&gt;** HTMLタグ内に自動的に表示されます。Java SE 1.2.2からは、ラベルを使用するかしないかにかかわらず、**&lt;code&gt;**タグは常に表示テキストを囲む形で含まれます。

•**package.class#member**には、参照されている任意の有効なプログラム要素の名前を指定します。つまり、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドの名前です。ただし、メンバー名の前の文字は、シャープ記号(**#**)にする必要があります。classは、任意のトップレベルまたはネストされたクラスか、インタフェースを表します。memberは、任意のコンストラクタ、メソッドまたはフィールドを表します(ネストされたクラスまたはインタフェースではありません)。この名前が、ドキュメント化されるクラスに含まれている場合、**javadoc**コマンドは、その名前へのリンクを作成します。外部参照クラスへのリンクを作成するには、**-link**オプションを使用します。参照クラスに属していない名前のドキュメントを参照するには、他の2つの**@see**タグ形式のどちらかを使用します。「名前の指定」を参照してください。

**注意:** 外部参照クラスは、コマンド行で**javadoc**コマンドに渡されないクラスです。生成ドキュメント内で外部参照クラスにリンクしている箇所は、外部参照または外部リンクと呼ばれます。たとえば、**java.awt package**に対してのみ**javadoc**コマンドを実行した場合、**Object**などの**java.lang**内のすべてのクラスが外部参照クラスになります。**-link**および**-linkoffline**オプションを使用して、外部参照クラスへリンクします。外部参照クラスのソース・コメントは**javadoc**コマンドの実行には使用できません。

•**label**は、省略可能なテキストで、リンクのラベルとして表示されます。ラベルには空白を含めることができます。**label**を省略すると、**package.class.member**が、現在のクラスおよびパッケージに応じて適切に短縮されて表示されます。「名前が表示される方法」を参照してください。

•空白文字が、**package.class#member**と**label**の間の区切り文字になります。カッコの内側の空白文字はラベルの先頭とは解釈されないため、メソッドのパラメータ間に空白文字を入れてもかまいません。

この例では、**@see**タグ(**Character**クラス内)が、**String**クラスのequalsメソッドを参照しています。タグには、名前**String#equals(Object)**とラベル**equals**の両方の引数が含まれています。

```
/**
 * @see String#equals(Object) equals
 */


 
```

標準ドックレットは、次のようなHTMLを生成します。

```
<dl>
<dt><b>See Also:</b>
<dd><a href="../../java/lang/String#equals(java.lang.Object)"><code>equals<code></a>
</dl>


 
```

前述のコードは、ブラウザに次のように表示され、ラベルは表示リンク・テキストになっています。

**関連項目**:

equals

名前の指定

この**package.class#member**という名前は、**java.lang.String#toUpperCase()**のような完全修飾名にすることも、**String#toUpperCase()**や**#toUpperCase()**のような非完全修飾名にすることもできます。名前が完全修飾より短い場合は、**javadoc**コマンドは、標準のJavaコンパイラの検索順序を使用して探します。「@seeタグの検索順序」を参照してください。名前は、メソッド引数の間など、カッコ内のスペースを含めることができます。部分的に修飾した短い名前を指定することの利点は、入力する文字数が減ることや、ソース・コードが読みやすくなることです。次のリストに様々な形式の名前を示します。ここで、**Class**にはクラスまたはインタフェースを、Typeにはクラス、インタフェース、配列、またはプリミティブを、methodにはメソッドまたはコンストラクタを、それぞれ指定できます。

```
Typical forms for @see package.class#member 
Referencing a member of the current class
@see #field
@see #method(Type, Type,...)
@see #method(Type argname, Type argname,...)
@see #constructor(Type, Type,...)
@see #constructor(Type argname, Type argname,...) 


 
Referencing another class in the current or imported packages
@see Class#field
@see Class#method(Type, Type,...)
@see Class#method(Type argname, Type argname,...)
@see Class#constructor(Type, Type,...)
@see Class#constructor(Type argname, Type argname,...)
@see Class.NestedClass
@see Class 


 
Referencing an element in another package (fully qualified)
@see package.Class#field
@see package.Class#method(Type, Type,...)
@see package.Class#method(Type argname, Type argname,...)
@see package.Class#constructor(Type, Type,...)
@see package.Class#constructor(Type argname, Type argname,...)
@see package.Class.NestedClass
@see package.Class
@see package


 
```

前のリストに関するメモ:

•最初のタイプの形式(パッケージとクラスを省略)の場合、**javadoc**コマンドは、現在のクラスの階層のみを検索します。つまり、現在のクラスかインタフェース、そのスーパークラスかスーパーインタフェース、またはその外側を囲んでいるクラスかインタフェースからメンバーを検索します(検索項目1–3)。現在のパッケージの他の部分や、他のパッケージは検索しません(検索項目4–5)。「@seeタグの検索順序」を参照してください。

•メソッドまたはコンストラクタの入力時に、**getValue**のようにカッコなしの名前を使用した場合、同じ名前のフィールドが存在していなければ、**javadoc**コマンドはそのメソッドへのリンクを作成します。このメソッドがオーバーロードされている場合、**javadoc**コマンドは、検索で最初に見つかったメソッドにリンクします。結果は前もって特定できません。

•ネストされたクラスは、すべての形式について、**outer.inner**として指定する必要があります。単純に**inner**とはしないでください。

•すでに述べたように、クラスとメンバーとの間の区切り文字としては、ドット(**.**)ではなくシャープ記号(**#**)を使用します。このように指定すると、**javadoc**コマンドは、あいまいさを解決できます。ドットは、クラス、ネストされたクラス、パッケージ、およびサブパッケージを区切るためにも使用されるからです。ただし、**javadoc**コマンドでは、あいまいさがなければドットは正しく解析されますが、警告は表示されます。

@seeタグの検索順序

**javadoc**コマンドは、ソース・ファイル、パッケージ・ファイル、概要ファイルに表示される**@see**タグを処理します。後者の2つのファイルでは、完全修飾の名前を**@see**タグに指定する必要があります。ソース・ファイルでは、完全修飾の名前、または部分修飾の名前を指定できます。

次に、**@see**タグの検索順序を示します。

1.現在のクラスまたはインタフェース。

2.外側を囲んでいるクラスとインタフェース(最も近いものから検索)。

3.スーパークラスとスーパーインタフェース(最も近いものから検索)。

4.現在のパッケージ。

5.インポートされているパッケージ、クラス、およびインタフェース(**import**文の順序に従って検索)。

**javadoc**コマンドは、各クラスについて項目1-3を再帰的に適用しながら、一致する名前が見つかるまで検索を続けます。つまり、まず現在のクラスを検索し、次にその外側を囲んでいるクラスEを検索した後、Eのスーパークラスを検索してから、Eを囲んでいるクラスを検索します。項目4と5では、**javadoc**コマンドが1つのパッケージ内のクラスまたはインタフェースを検索する順序は決まっていません(その順序は、個々のコンパイラによって異なります)。項目5では、**javadoc**コマンドは、*java.lang*を検索します。このパッケージは、すべてのプログラムに自動的にインポートされるからです。

**javadoc**コマンドは、完全修飾でないソース・ファイルで**@see**タグを見つけると、Javaコンパイラと同じ順序で指定された名前を検索します(ただし、**javadoc**コマンドは、特定の名前空間のあいまいさを検出しません。これは、ソース・コードにこれらのエラーが存在していないことを前提としているためです)。この検索順序は、Java言語仕様で正式に定義されています。**javadoc**コマンドは、関連するクラスとパッケージ、およびインポートされたクラスとパッケージのすべてからその名前を検索します。具体的には、次の順序で検索します。

1.現在のクラスまたはインタフェース。

2.外側を囲んでいるクラスとインタフェース(最も近いものから検索)。

3.スーパークラスとスーパーインタフェース(最も近いものから検索)。

4.現在のパッケージ。

5.インポートされているパッケージ、クラス、およびインタフェース(**import**文の順序に従って検索)。

**javadoc**コマンドは、必ずしもサブクラスを検索するとは限りません。また、実行中に他のパッケージのドキュメントが生成される場合でも、他のパッケージを検索しません。たとえば、**@see**タグが**java.awt.event.KeyEvent**クラス内に含まれていて、**java.awt package**内のある名前を参照していても、そのクラスがインポートしないかぎり**javadoc**コマンドはそのパッケージを検索しません。

名前が表示される方法

**label**を省略すると、**package.class.member**が表示されます。一般に、これは現在のクラスおよびパッケージに応じて適切に短縮されます。短縮されるとは、**javadoc**コマンドにより必要最小限の名前のみが表示されるということです。たとえば、**String.toUpperCase()**メソッドに、同じクラスのメンバーへの参照と他のクラスのメンバーへの参照が含まれている場合、クラス名が表示されるのは後者のケースのみです(次のリストを参照)。パッケージ名を全体的に削除するには、**-noqualifier**オプションを使用します。

**参照のタイプ**: **@see**タグは同じクラス、同じパッケージのメンバーを参照します

**例**: **@see String#toLowerCase()**

**表示**: **toLowerCase()** - パッケージおよびクラス名を省略します

**参照のタイプ**: **@see**タグは別のクラス、同じパッケージのメンバーを参照します

**例**: **@see Character#toLowerCase(char)**

**表示**: **Character.toLowerCase(char)** - パッケージ名を省略し、クラス名を含みます

**参照のタイプ**: **@see**タグは異なるクラス、異なるパッケージのメンバーを参照します

**例**: **@see java.io.File#exists()**

**表示**: **java.io.File.exists()** - パッケージおよびクラス名を含みます

@seeタグの例

右側のコメントは、**@see**タグが**java.applet.Applet**などの別のパッケージのクラス内にある場合に、名前がどのように表示されるかを示しています。JavadocツールでのDocコメントの記述方法の@seeに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@see)を参照してください。

```
                                            See also:
@see java.lang.String                   //  String                           
@see java.lang.String The String class  //  The String class                 
@see String                             //  String                           
@see String#equals(Object)              //  String.equals(Object)            
@see String#equals                      //  String.equals(java.lang.Object)   
@see java.lang.Object#wait(long)        //  java.lang.Object.wait(long)      
@see Character#MAX_RADIX                //  Character.MAX_RADIX              
@see <a href="spec.html">Java Spec</a>  //  Java Spec            
@see "The Java Programming Language"    //  "The Java Programming Language" 


 
```

**注意:** **@see**タグを拡張してドキュメント化されないクラスにリンクするには、**-link**オプションを使用します。

@serial *field-description* | include | exclude

JDK 1.2で導入

デフォルトの直列化可能フィールドのドキュメンテーション・コメントで使用します。クラスの直列化可能なフィールドおよびデータの文書化 (http://docs.oracle.com/javase/8/docs/platform/serialization/spec/serial-arch.html#5251)を参照してください

Oracleの直列化された形式の仕様にクラスを含める基準 (http://www.oracle.com/technetwork/java/javase/documentation/serialized-criteria-137781.html)も参照してください

**field-description**(省略可能)では、フィールドの意味を説明し、取り得る値のリストを示す必要があります。必要な場合は、複数の行に渡って説明を記述できます。標準ドックレットは、この情報を、直列化された形式ページに追加します。相互参照ページを参照してください。

クラスを直列化した後に直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。

**include**および**exclude**引数は、直列化された形式ページにクラスまたはパッケージを含めるか除外するかを示します。次のように機能します。

•**Serializable**を実装しているpublicまたはprotectedクラスは、そのクラス(またはそのクラスが属するパッケージ)が**@serial exclude**タグでマークされていないかぎり、含められます。

•**Serializable**を実装しているprivateまたはpackage-privateクラスは、そのクラス(またはそのクラスが属するパッケージ)が**@serial include**タグでマークされていないかぎり、除外されます。

たとえば、**javax.swing**パッケージはpackage.htmlまたはpackage-info.java内で**@serial** **exclude**タグでマークされています。publicクラス**java.security.BasicPermission**は**@serial exclude**タグでマークされています。package-privateクラス**java.util.PropertyPermissionCollection**は**@serial include**タグでマークされています。

クラス・レベルの**@serial**タグはパッケージ・レベルの**@serial**タグをオーバーライドします。

@serialData *data-description*

JDK 1.2で導入

データの説明値を使用して、直列化された形式でのデータの型と順序をドキュメント化します。このデータには、**writeObject**メソッドによって書き込まれる省略可能なデータ、および**Externalizable.writeExternal**メソッドによって書き込まれるすべてのデータ(ベース・クラスを含む)が含まれます。

**@serialData**タグは、**writeObject**、**readObject**、**writeExternal**、**readExternal**、**writeReplace**および**readResolve**メソッドのドキュメンテーション・コメントで使用できます。

@serialField *field-name* *field-type* *field-description*

JDK 1.2で導入

**Serializable**クラスの**serialPersistentFields**メンバーの**ObjectStreamField**コンポーネントをドキュメント化します。**ObjectStreamField**コンポーネントごとに1つの**@serialField**タグを使用します。

@since *since-text*

JDK 1.1で導入

生成ドキュメントに、指定された**since-text**の値の*「導入されたバージョン」*見出しを追加します。このテキストには、特別な内部構造はありません。このタグは、すべてのドキュメンテーション・コメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールドで有効です。このタグは、特定の変更または機能が、**since-text**の値によって指定されたソフトウェア・リリース以降、存在していることを意味します。たとえば、**@since 1.5**です。

Javaプラットフォームのソース・コードの場合、**@since**タグは、JavaプラットフォームAPI仕様のバージョンを示します。ソース・コードがリファレンス実装に追加された時期を示すとは限りません。複数の**@since**タグを使用でき、複数の**@author**タグのように扱われます。プログラム要素が複数のAPIで使用される場合、複数のタグを使用できます。

@throws *class-name* *description*

JDK 1.2で導入

**@exception**タグと同じ動作をします。JavadocツールでのDocコメントの記述方法の@throwsに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@exception)を参照してください

**@throws**タグは、生成ドキュメントに*Throws*小見出しを追加して、**class-name**および**description**テキストを書き込みます。*class-name*は、そのメソッドからスローされる可能性のある例外の名前です。このタグは、メソッド、コンストラクタのドキュメンテーション・コメント内でのみ有効です。このクラスが完全指定の名前で記述されていない場合、**javadoc**コマンドは、検索順序に従ってクラスを探します。複数の**@throws**タグを、同じ例外または違う例外の指定したドキュメンテーション・コメントで使用できます。「@seeタグの検索順序」を参照してください。

すべてのチェック済例外がドキュメント化されるようにするために、**@throws**タグがthrows節内の例外用に存在しない場合は、**@throws**タグでドキュメント化されたかのように、**javadoc**コマンドによって例外がHTML出力に説明なしで追加されます。

オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、**@throws**のドキュメントがそのメソッドからサブクラスにコピーされます。インタフェース・メソッドから実装メソッドにコピーされる場合も同様です。**{@inheritDoc}**タグを使用して、**@throws**タグがドキュメンテーションを継承するように強制できます。

{@value *package.class#field*}

JDK 1.4で導入

定数の値を表示します。**{@value}**タグが静的フィールドのドキュメンテーション・コメントで引数なしで使用されている場合、その定数の値を表示します。

```
/**
 * The value of this constant is {@value}.
 */
public static final String SCRIPT_START = "<script>"


 
```

任意のドキュメンテーション・コメント内で引数**package.class#field**ありで使用された場合、**{@value}**タグは指定された定数の値を表示します。

```
/**
 * Evaluates the script starting with {@value #SCRIPT_START}.
 */
public String evalScript(String script) {}


 
```

引数**package.class#field**は、**@see**タグ引数と同一の形式になります。ただし、メンバーは静的フィールドである必要があります。

これらの定数の値は「定数フィールド値」 (http://docs.oracle.com/javase/8/docs/api/constant-values.html)にも表示されます

@version *version-text*

JDK 1.0で導入

**-version**オプションが使用されている場合、生成ドキュメントに*「バージョン」*小見出しを追加して、指定された**version-text**の値を書き込みます。このタグはこのコードが含まれるソフトウェアの現在のリリース番号を保持するためのものであるのに対し、**@since**タグは、このコードが導入されたリリース番号を保持します。**version-text**の値には、特別な内部構造はありません。JavadocツールでのDocコメントの記述方法の@versionに関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#@version)を参照してください

1つのドキュメンテーション・コメントに複数の**@version**タグを含めることができます。必要に応じて、1つの**@version**タグに1つのリリース番号を指定することも、複数のリリース番号を指定することもできます。前者の場合は、**javadoc**コマンドによって名前と名前の間にカンマ(,)と空白文字が挿入されます。後者の場合は、テキスト全体が解析されることなく、生成ドキュメントにコピーされます。したがって、カンマではなく、各言語に対応した名前区切り文字を使用する必要があるときに、1行に複数の名前を指定できます。

# タグを使用できる場所

ここでは、タグを使用できる場所について説明します。次のタグがすべてのドキュメンテーション・コメントで使用できます。**@see**、**@since**、**@deprecated**、**{@link}**、**{@linkplain}**および**{@docroot}**。

## 概要タグ

概要タグは、概要ページのドキュメンテーション・コメントで使用できるタグです(このドキュメンテーション・コメントは、通常overview.htmlという名前のソース・ファイル内にあります)。他のドキュメンテーション・コメントの場合と同様に、これらのタグは、主説明の後で使用する必要があります。

**注意:** Java SE 1.2では、概要ドキュメント内の**{@link}**タグにbugがあります。テキストは正しく表示されますが、リンクが設定されません。現在のところ、**{@docRoot}**タグは、概要ドキュメント内では機能しません。

概要タグは、次のとおりです。

@see reference || @since since-text || @serialField field-name field-type field-description || @author name-text || @version version-text || {@link package.class#member label} || {@linkplain package.class#member label} || {@docRoot} ||

## パッケージ・タグ

パッケージ・タグは、パッケージのドキュメンテーション・コメントで使用できるタグで、ドキュメンテーション・コメントはpackage.htmlまたはpackage-info.javaという名前のソース・ファイル内にあります。ここで使用できる**@serial**タグは、**include**または**exclude**引数を指定したもののみです。

パッケージ・タグは、次のとおりです。

@see reference || @since since-text || @serial field-description | include | exclude || @author name-text || @version version-text || {@linkplain package.class#member label} || {@linkplain package.class#member label} || {@docRoot} ||

## クラスおよびインタフェース・タグ

次に、クラスまたはインタフェースのドキュメンテーション・コメントで使用できるタグを示します。**@serial**タグは、**include**または**exclude**引数を指定して、クラスまたはインタフェースのドキュメンテーション内でのみ使用できます。

@see reference || @since since-text || @deprecated deprecated-text || @serial field-description | include | exclude || @author name-text || @version version-text || {@link package.class#member label} || {@linkplain package.class#member label} || {@docRoot} ||

クラス・コメントの例:

```
/**
 * A class representing a window on the screen.
 * For example:
 * <pre>
 *    Window win = new Window(parent);
 *    win.show();
 * </pre>
 *
 * @author  Sami Shaio
 * @version 1.13, 06/08/06
 * @see     java.awt.BaseWindow
 * @see     java.awt.Button
 */
class Window extends BaseWindow {
   ...
}


 
```

## フィールド・タグ

これらのタグは、フィールドに表示できます。

@see reference || @since since-text || @deprecated deprecated-text || @serial field-description | include | exclude || @serialField field-name field-type field-description || {@link package.class#member label} || {@linkplain package.class#member label} || {@docRoot} || {@value package.class#field}

フィールド・コメントの例:

```
    /**
     * The X-coordinate of the component.
     *
     * @see #getLocation()
     */
    int x = 1263732;


 
```

## コンストラクタとメソッド・タグ

次に、コンストラクタまたはメソッドのドキュメンテーション・コメントで使用できるタグを示します。ただし、**@return**はコンストラクタでは使用できず、 **{@inheritDoc}**には制限があります。

@see reference || @since since-text || @deprecated deprecated-text || @param parameter-name description || @return description || @throws class-name description || @exception class-name description || @serialData data-description || {@link package.class#member label} || {@linkplain package.class#member label} || {@inheritDoc} || {@docRoot}

**注意:** **@serialData**タグは、**writeObject**、**readObject**、**writeExternal**、**readExternal**、**writeReplace**および**readResolve**メソッドのドキュメンテーション・コメントでのみ使用できます。

メソッド・コメントの例:

```
/**
     * Returns the character at the specified index. An index 
     * ranges from <code>0</code> to <code>length() - 1</code>
     *
     * @param     index the index of the desired character.
     * @return    the desired character.
     * @exception StringIndexOutOfRangeException 
     *              if the index is not in the range <code>0</code> 
     *              to <code>length()-1</code>
     * @see       java.lang.Character#charValue()
     */
    public char charAt(int index) {
       ...
    }


 
```

# オプション

**javadoc**コマンドは、ドックレットを使用して出力を決定します。**javadoc**コマンドは、**-doclet**オプションでカスタム・ドックレットが指定されている場合以外は、デフォルトの標準ドックレットを使用します。**javadoc**コマンドには、任意のドックレットとともに使用できるコマンド行オプションがあります。これらのオプションについては、Javadocオプションで説明します。標準ドックレットでは、この他に、いくつかの追加のコマンド行オプションが提供されます。これらのオプションについては、標準ドックレットのオプションで説明します。どのオプション名も、大文字と小文字が区別されません。ただし、オプションの引数では、大文字と小文字が区別されます。

•Javadocオプションも参照してください

•標準ドックレットのオプションも参照してください

オプションは次のとおりです。

•-1.1

•-author

•-bootclasspath classpathlist

•-bottom text

•-breakiterator

•-charset name

•-classpath classpathlist

•-d directory

•-docencoding name

•-docfilesubdirs

•-doclet class

•-docletpath classpathlist

•-doctitle title

•-encoding

•-exclude packagename1:packagename2:...

•-excludedocfilessubdir name1:name2

•-extdirs dirist

•-footer footer

•-group groupheading packagepattern:packagepattern

•-header header

•-help

•-helpfile path\\filename

•-Jflag

•-javafx

•-keywords

•-link extdocURL

•-linkoffline extdocURL packagelistLoc

•-linksource

•-locale language\_country\_variant

•-nocomment

•-nodeprecated

•-nodeprecatedlist

•-nohelp

•-noindex

•-nonavbar

•-noqualifier all | packagename1:packagename2...

•-nosince

•-notimestamp

•-notree

•-overview path/filename

•-package

•-private

•-protected

•-public

•-quiet

•-serialwarn

•-source release

•-sourcepath sourcepathlist

•-sourcetab tablength

•-splitindex

•-stylesheet path/filename

•-tag tagname:Xaoptcmf:"taghead"

•-subpackages package1:package2:...

•-taglet class

•-tagletpath tagletpathlist

•-title title

•-top

•-use

•-verbose

•-version

•-windowtitle title

次のオプションは、すべてのドックレットに使用可能なコアのJavadocオプションです。標準ドックレットでは、ドックレットの他の部分を提供します。**-bootclasspath**、**-breakiterator**、**-classpath**、**-doclet**、**-docletpath**、**-encoding**、-**exclude**、**-extdirs**、**-help**、**-locale**、**-overview**、**-package**、**-private**、**-protected**、**-public**、**-quiet**、**-source**、**-sourcepath**、**-subpackages**および**-verbose**。

## [Javadocオプション](#Javadoc~2)

-overview *path/filename*

**javadoc**コマンドに対して、*path/filename* で指定されたソース・ファイルから概要ドキュメント用のテキストを取得し、そのテキストを「概要」ページ(overview-summary.html)に配置するように指定します。*path/filename*は、現在のディレクトリからの相対パスです。

**filename**の値で任意の名前を使用し、pathで任意の配置先を指定できますが、通常はoverview.htmlという名前を付け、ソース・ツリー内の最上位パッケージ・ディレクトリを含むディレクトリに配置します。この場所に配置すると、パッケージをドキュメント化するときにpathを指定する必要がなくなります。これは、**-sourcepath**オプションによってこのファイルが指し示されるからです。

たとえば、**java.lang**パッケージのソース・ツリーが/src/classes/java/lang/の場合、概要ファイルを/src/classes/overview.htmlに配置できます

実際の例を参照してください。

*path/filename*で指定するファイルについては、概要コメント・ファイルを参照してください。

「概要」ページが作成されるのは、**javadoc**コマンドに複数のパッケージ名を渡した場合のみです。詳細は、HTMLフレームを参照してください。「概要」ページのタイトルは、**-doctitle**によって設定されます。

-Xdoclint:(all|none|\[-]*&lt;group&gt;*)

不正な参照、アクセシビリティの欠落およびJavadocコメントの不足の警告をレポートし、無効なJavadoc構文および不足しているHTMLタグのエラーをレポートします。

このオプションにより、**javadoc**コマンドは生成された出力に含まれるすべてのドキュメント・コメントをチェックします。通常どおり、標準オプション**-public**、**-protected**、**-package**および**-private**で生成された出力に含む項目を選択できます。

**-Xdoclint**が有効になっている場合は、**javac**コマンドと同様にメッセージで問題がレポートされます。**javadoc**コマンドは、メッセージ、ソース・ファイルのコピーおよびエラーが検出された正確な位置を指すキャレットを出力します。メッセージは、重大度、および生成されたドキュメントがバリデータを使用して実行された場合にエラーが発生する可能性に応じて、警告またはエラーになります。たとえば、不正な参照またはJavadocコメントの欠落は、**javadoc**コマンドが無効なHTMLを生成する原因にならないため、これらの問題は警告としてレポートされます。構文エラーまたはHTML終了タグの欠落は、**javadoc**コマンドが無効なHTMLを生成する原因になるため、これらの問題はエラーとしてレポートされます。

デフォルトでは、**-Xdoclint**オプションは有効になっています。オプション**-Xdoclint:none**で無効にします。

**-Xdoclint**オプションでレポートされる内容は次のオプションで変更します。

•**-Xdoclint none**: **-Xdoclint**オプションを無効にします。

•**-Xdoclint group**: *group*チェックを有効にします。

•**-Xdoclint all**: すべてのチェック・グループを有効にします。

•**-Xdoclint all,-group**: *group*チェック以外のすべてを有効にします。

変数*group*は次のいずれかの値を持ちます。

•**accessibility**: アクセシビリティ・チェッカで検出する問題をチェックします(たとえば、**&lt;table&gt;**タグで指定されるno captionまたはsummary属性)。

•**html**: インライン要素へのブロック要素の挿入や終了タグを必要とする要素を終了しないなど、上位レベルHTMLの問題を検出します。ルールは、HTML 4.01仕様から導出されます。このタイプのチェックは、**javadoc**コマンドを有効にして、ブラウザが受け入れる可能性のあるHTMLの問題を検出します。

•**missing**: 欠落しているJavadocコメントまたはタグをチェックします(たとえば、欠落しているコメントやクラス、または欠落している**@return**タグやメソッド上の同様のタグ)。

•**reference**: JavadocタグのJava API要素の参照に関連する問題をチェックします(たとえば、**@see**で見つからない項目、または**@param**の後の不正な名前)。

•**syntax**: エスケープされていない山カッコ(**&lt;**および**&gt;**)やアンパサンド(**&**)、無効なJavadocタグなどの下位レベルの問題を確認します。

**-Xdoclint**オプションを複数回指定して、複数のカテゴリのエラーと警告をチェックするオプションを有効にできます。または、前のオプションを使用して、複数のエラーおよび警告カテゴリを指定できます。たとえば、次のコマンドのいずれかを使用して、*filename*ファイル内のHTML、構文およびアクセシビリティの問題をチェックします。

```
javadoc -Xdoclint:html -Xdoclint:syntax -Xdoclint:accessibility filename
javadoc -Xdoclint:html,syntax,accessibility filename


 
```

**注意:** **javadoc**コマンドでは、これらのチェックの完全性は保証されません。具体的には、完全なHTMLコンプライアンス・チェッカではありません。-**Xdoclint**オプションの目的は、**javadoc**コマンドを有効にして一般的なエラーの大半をレポートすることです。

**javadoc**コマンドは、無効な入力の修正を試行せず、レポートのみ行います。

-public

publicクラスおよびメンバーのみ表示します。

-protected

protectedおよびpublicのクラスとメンバーのみを表示します。これがデフォルトです。

-package

package、protected、およびpublicのクラスとメンバーのみ表示します。

-private

すべてのクラスとメンバーを表示します。

-help

オンライン・ヘルプを表示します。**javadoc**と**ドックレット**のコマンド行オプションがリストされます。

-doclet *class*

ドキュメントの生成に使用するドックレットを起動するためのクラス・ファイルを指定します。完全修飾名を使用します。このドックレットにより、出力の内容と形式が定義されます。**-doclet**オプションが使用されていない場合、**javadoc**コマンドは、標準ドックレットを使用してデフォルトのHTML形式を生成します。このクラスには**start(Root)**メソッドが含まれている必要があります。この起動クラスへのパスは**-docletpath**オプションによって定義されます。ドックレットの概要 (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html)を参照してください

-docletpath *classpathlist*

**-doclet**オプションで指定されたドックレット開始クラス・ファイル、およびそのクラスが依存するすべてのJARファイルへのパスを指定します。開始クラス・ファイルがJARファイル内にある場合、このオプションでJARファイルへのパスを指定します。絶対パスまたは現在のディレクトリからの相対パスを指定できます。**classpathlist**に複数のパスやJARファイルが含まれる場合には、それらをSolarisの場合はコロン(:)で、Windowsの場合はセミコロン(;)でそれぞれ区切ります。目的のドックレット開始クラスがすでに検索パス内にある場合は、このオプションは不要です。ドックレットの概要 (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html)を参照してください

-1.1

Javadoc 1.4から削除され、代替はありません。このオプションは、Javadoc 1.1によって生成されるのと同じ外見と機能を持つドキュメントを作成するためのものでした(ネストされたクラスはサポートされていません)。このオプションが必要な場合は、Javadoc 1.2または1.3をかわりに使用してください。

-source *release*

受け付けるソース・コードのリリースを指定します。**release**パラメータには次の値を指定できます。**javac**コマンドでコードをコンパイルするときに使用する値に対応する**リリース**の値を使用します。

•**リリース値: 1.5**。**javadoc**コマンドは、JDK 1.5で導入された総称および他の言語機能を含むコードを受け付けます。**-source**オプションが使用されなかった場合のコンパイラのデフォルト動作は、1.5のものになります。

•**リリース値: 1.4**。**javadoc**コマンドは、JDK 1.4で導入されたアサーションを含むコードを受け付けます。

•**リリース値: 1.3**。**javadoc**コマンドは、JDK 1.3以降に導入されたアサーション、総称、または他の言語機能をサポートしません。

-sourcepath *sourcepathlist*

パッケージ名または**-subpackages**オプションを**javadoc**コマンドに渡すときに、ソース・ファイルを見つけるための検索パスを指定します。

複数のパスはコロン(:)で区切ります。

**javadoc**コマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。このオプションを使用して、ドキュメント化されるソース・ファイルの位置のみでなく、それ自体はドキュメント化されないがドキュメント化されるソース・ファイルから継承されたコメントを持つソース・ファイルの位置も確認できます。

**-sourcepath**オプションを使用できるのは、**javadoc**コマンドにパッケージ名を渡す場合のみです。**javadoc**コマンドに渡されるソース・ファイルは検索されません。ソース・ファイルを特定するには、そのディレクトリに移動するか、「1つ以上のクラスのドキュメント化」に示すように各ファイルの前にパスを含めます。**-sourcepath**が省略された場合、**javadoc**コマンドは、クラス・パスを使用してソース・ファイルを検索します(**-classpath**を参照)。デフォルトの**-sourcepath**は、クラス・パスの値です。**-classpath**を省略してパッケージ名を**javadoc**コマンドに渡すと、**javadoc**コマンドは現在のディレクトリ(およびそのサブディレクトリ)からソース・ファイルを検索します。

**sourcepathlist**には、ドキュメント化するパッケージのソース・ツリーのルート・ディレクトリを設定します。

たとえば、**com.mypackage**という名前のパッケージをドキュメント化する場合に、そのソース・ファイルが/home/user/src/com/mypackage/\*.javaにあるとします。ソース・パスをcom\\mypackageが含まれるディレクトリ/home/user/srcに指定してから、次のように、パッケージ名を指定します。

```
javadoc -sourcepath /home/user/src/ com.mypackage


 
```

ソース・パスの値とパッケージ名を連結して、ドットをスラッシュ(/)に変更すると、次のように、パッケージのフルパスになります。

/home/user/src/com/mypackage

2つのソース・パスを設定するには、次のようにします。

```
javadoc -sourcepath /home/user1/src:/home/user2/src com.mypackage


 
```

-classpath *classpathlist*

**javadoc**コマンドが参照クラスの検索を行うときに使用するパスを指定します。参照クラスとは、ドキュメント化されるクラスと、それらのクラスによって参照されるすべてのクラスのことです。

複数のパスはコロン(:)で区切ります。

**javadoc**コマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。**classpathlist**の値を指定するときは、クラス・パスのドキュメントにある指示に従ってください。

**-sourcepath**が省略された場合、**javadoc**コマンドは**-classpath**を使用して、ソース・ファイルおよびクラス・ファイルを検索します(後方互換性のため)。ソース・ファイルとクラス・ファイルを別々のパスから検索する必要がある場合は、**-sourcepath**と**-classpath**の両方を使用します。

たとえば、**com.mypackage**をドキュメント化する場合に、そのソース・ファイルがディレクトリ/home/user/src/com/mypackageにあり、このパッケージが/home/user/lib内のライブラリに依存しているとき、次のように指定します。

```
javadoc -sourcepath /home/user/lib -classpath /home/user/src com.mypackage


 
```

他のツールと同様に、**-classpath**が指定されていない場合、**CLASSPATH**環境変数が設定されていれば、**javadoc**コマンドはその環境変数を使用します。どちらも設定されていない場合、**javadoc**コマンドは現在のディレクトリからクラスを検索します。

**javadoc**コマンドが**-classpath**を使用してユーザー・クラスを検索する方法についての、拡張機能クラスやブートストラップ・クラスに関連した詳細は、クラスの検索方法 (http://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html)を参照してください。

\*のベース名を含むクラス・パス要素は、**.jar**または**.JAR**を拡張子に持つディレクトリ内のすべてのファイルのリストを指定するのと同等とみなされます。

たとえば、ディレクトリ**mydir**に**a.jar**と**b.JA**Rが含まれている場合、クラス・パス要素**foo/\***は**A.jar:b.JAR**に展開されますが、JARファイルの順番は未指定となります。非表示のファイルを含む、指定したディレクトリ内のすべてのJARファイルがリストに含まれます。\*からなるクラス・パス・エントリは、現在のディレクトリ内のすべてのJARファイルのリストに展開されます。**CLASSPATH**環境変数も同様に展開されます。クラス・パスのワイルドカードの展開は、Java Virtual Machine (JVM)の開始前に行われます。Javaプログラムは、System.getenv(**"CLASSPATH"**)の呼び出しによってなど、環境を問い合せる場合を除き、展開されていないワイルドカードを参照しません。

-subpackages *package1:package2:...*

ソース・ファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。このオプションは、ソース・コードに新しいサブパッケージを追加する際に便利です。新しいサブパッケージが自動的に組み込まれるからです。各package引数は、任意の最上位サブパッケージ(**java**など)または完全修飾パッケージ(**javax.swing**など)になります。ソース・ファイルを含める必要はありません。引数は、すべてのオペレーティング・システムで、コロンで区切られます。ワイルドカードは使用できません。パッケージの検索場所を指定するには、**-sourcepath**を使用します。このオプションでは、ソース・ツリー内に存在するがパッケージに含まれないソース・ファイルを処理しません。ソース・ファイルの処理を参照してください。

たとえば、次のコマンドは、**java**および**javax.swing**という名前のパッケージとこれらのサブパッケージ全部のドキュメントを生成します。

```
javadoc -d docs -sourcepath /home/user/src  -subpackages java:javax.swing 


 
```

-exclude *packagename1:packagename2:...*

指定されたパッケージとそのサブパッケージを**-subpackages**によって作成されたリストから無条件に除外します。過去または将来の**-subpackages**オプションの指定によって組み込まれるパッケージも除外の対象となります。

次の例では、**java.io**、**java.util**、**java.math**などは組み込まれますが、**java.net**と**java.lang**をルートに持つパッケージは除外されます。**java.lang**のサブパッケージである**java.lang.ref**が除外される点に注意してください。

```
javadoc -sourcepath /home/user/src -subpackages java -exclude 
    java.net:java.lang


 
```

-bootclasspath *classpathlist*

ブート・クラスが存在するパスを指定します。ブート・クラスとは、通常、Javaプラットフォーム・クラスのことです。**bootclasspath**は、**javadoc**コマンドがソース・ファイルとクラス・ファイルを探すときに使用する検索パスの一部です。詳細は、クラスの検出方法 (http://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html)を参照してください

**classpathlist**パラメータ内のディレクトリは、セミコロン(;)で区切る(Windowsの場合)か、コロン(:)で区切ります(Oracle Solarisの場合)。

-extdirs *dirist*

拡張機能クラスが存在するディレクトリを指定します。拡張機能クラスとは、Java拡張機能機構を使用するすべてのクラスです。**extdirs**オプションは、**javadoc**コマンドがソース・ファイルとクラス・ファイルを探すときに使用する検索パスの一部です。詳細は、**-classpath**オプションを参照してください。**dirlist**内のディレクトリは、セミコロン(;)で区切る(Windowsの場合)か、コロン(:)で区切ります(Oracle Solarisの場合)。

-verbose

**javadoc**コマンドの実行中に詳細なメッセージを表示します。**verbose**オプションを指定しないと、ソース・ファイルのロード時、ドキュメントの生成時(ソース・ファイルごとに1つのメッセージ)、およびソート時にメッセージが表示されます。verboseオプションを指定すると、各Javaソース・ファイルの解析に要した時間(ミリ秒単位)を示す追加のメッセージが表示されます。

-quiet

メッセージを抑制し、警告とエラーのみが表示されるようにして、これらを確認しやすくします。**version**文字列も抑止します。

-breakiterator

英語の場合、パッケージ、クラスまたはメンバーの主説明の最初の文の終わりを判断する際に、**java.text.BreakIterator**の国際化された文境界を使用します。他のすべてのロケールは、英語言語というロケール固有のアルゴリズムではなく、すでに**BreakIterator**クラスを使用しています。最初の文は、パッケージ、クラス、またはメンバーのサマリーにコピーされ、アルファベット順の索引にコピーされます。JDK 1.2以降、**BreakIterator**クラスは、英語を除くすべての言語の文の終わりを判断するために、すでに使用されています。したがって、**-breakiterator**オプションは、1.2以降では英文以外には効果がありません。英文には、次のような独自のデフォルトのアルゴリズムがあります。

•英文のデフォルトの文区切りアルゴリズム。空白文字またはHTMLブロック・タグ(**&lt;P&gt;**など)が続くピリオドで停止します。

•breakiterator文区切りアルゴリズム。次の語が大文字で始まる場合、空白文字が続くピリオド、疑問符、または感嘆符で停止します。このアルゴリズムでは「The serial no. is valid」など、ほとんどの省略表記が処理されますが、「Mr. Smith」は処理されません。**-breakiterator**オプションでは、HTMLタグや、数字または記号で始まる文では停止しません。HTMLタグに埋め込まれている場合でも、アルゴリズムは「../filename」の最後のピリオドで停止します。

Java SE 1.5では**-breakiterator**警告メッセージが削除され、デフォルトの文区切りアルゴリズムは変更されていません。ソース・コードを変更せず、SE 1.4.xでの**-breakiterator**オプションの警告を除去していない場合でも、何もする必要はありません。Java SE 1.5.0からは警告は消滅しています。

-locale *language\_country\_variant*

**javadoc**コマンドがドキュメントを生成するときに使用するロケールを指定します。この引数は、**java.util.Locale**ドキュメントで説明しているように、**en\_US** (英語、米国)または**en\_US\_WIN** (Windowsバリアント)などのロケールの名前です。

**注意:** **-locale**オプションは、標準ドックレットが提供するすべてのオプション、またはその他の任意のドックレットが提供するすべてのオプションより前(左側)に指定する必要があります。そうしないと、ナビゲーション・バーが英語で表示されます。このコマンド行オプションのみ、指定する順序に依存します。標準ドックレットのオプションを参照してください。

ロケールを指定すると、指定したロケールのリソース・ファイルが**javadoc**コマンドによって選択されて、メッセージ(ナビゲーション・バー、リストと表の見出し、ヘルプ・ファイルの目次、stylesheet.cssのコメントなどの文字列)のために使用されます。また、アルファベット順にソートされるリストのソート順、および最初の文の終わりを判断するための文の区切り文字も、指定したロケールによって決まります。**-locale**オプションは、ドキュメント化されるクラスのソース・ファイル内で指定されているドキュメンテーション・コメントのテキストのロケールを決定するものではありません。

-encoding

ソース・ファイルのエンコーディングの名前(**EUCJIS/SJIS**など)を指定します。このオプションが指定されていない場合は、プラットフォームのデフォルト・コンバータが使用されます。およびオプションも参照してください。

-J*flag*

**javadoc**コマンドを実行するJava Runtime Environment (JRE)に、**flag**を直接渡します。たとえば、生成ドキュメントを処理するためにシステムで32MBのメモリーを確保しておく必要がある場合は、**-Xmx**オプションを次のように呼び出します。**javadoc -J-Xmx32m -J-Xms32m com.mypackage**。**-Xms**は省略可能で、これは初期メモリーのサイズを設定するのみのオプションで、必要なメモリーの最小量がわかっている場合に便利です。

**J**と**flag**の間に空白文字はありません。

使用している**javadoc**コマンドのバージョンを確認するには**-version**オプションを使用します。出力ストリームには標準ドックレットのバージョン番号が含まれます。Javadocコマンドの実行を参照してください。

```
javadoc -J-version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)


 
```

-javafx

標準ドックレットに対してJavaFX拡張機能を使用して、HTMLドキュメントを生成します。生成されたドキュメントには、標準Javaドックレットで生成された他のサマリー・セクションに加えて「プロパティのサマリー」セクションが含まれています。リストされたプロパティは、各プロパティのgetterおよびsetterメソッドのセクションにリンクされます。

getterおよびsetterメソッドに対して明示的に記載されているドキュメント・コメントがない場合、プロパティ・メソッドのドキュメント・コメントがこれらのメソッドに対して生成されたドキュメントに自動的にコピーされます。このオプションは、プロパティのデフォルト値を記述できる新しい**@defaultValue**タグも追加します。

例:

```
javadoc -javafx MyClass.java -d testdir
```

## 標準ドックレットのオプション

-d *directory*

**javadoc**コマンドが生成されたHTMLファイルを保存する生成先ディレクトリを指定します。**-d**オプションを省略すると、ファイルは現在のディレクトリに保存されます。**directory**の値には、絶対ディレクトリ、または現在の作業ディレクトリからの相対ディレクトリを指定できます。Java SE 1.4では、**javadoc**コマンドを実行すると生成先ディレクトリが自動的に作成されます。

たとえば、次の例では、**com.mypackage**パッケージのドキュメントが生成され、その結果が/user/doc/ディレクトリに保存されます。**javadoc -d /user/doc/ com.mypackage**

-use

ドキュメント化されるクラスおよびパッケージごとに1つの「使用」ページを組み込みます。このページには、その特定のクラスまたはパッケージのAPIを使用しているパッケージ、クラス、メソッド、コンストラクタ、およびフィールドが記述されます。たとえば、クラスCを例にとると、クラスCを使用しているものとしては、Cのサブクラス、Cとして宣言されているフィールド、Cを返すメソッド、および型Cのパラメータを持つメソッドとコンストラクタがあります。たとえば、**String**型用の「使用」ページを表示できます。**java.awt.Font**クラスの**getName**メソッドは**String**型を戻すので、**getName**メソッドは**String**を使用し、**getName**メソッドが**String**用の「使用」ページに表示されます。これは実装ではなくAPIの使用のみをドキュメント化します。メソッドがその実装で**String**を使用するが、引数として文字列を取らない、または文字列を返さない場合、それは**String**の使用とはみなされません。生成された「使用」ページにアクセスするには、クラスまたはパッケージに移動し、ナビゲーション・バーの**リンクの使用**をクリックします。

-version

生成ドキュメントに、@versionのテキストを組み込みます。このテキストは、デフォルトでは省略されます。使用している**javadoc**コマンドのバージョンを確認するには**-J-version**オプションを使用します。

-author

生成ドキュメントに、**@author**のテキストを組み込みます。

-splitindex

索引ファイルをアルファベットごとに複数のファイルに分割し、文字ごとに1つのファイルと、アルファベット以外の記号で始まる索引エントリ用に1つのファイルを作成します。

-windowtitle *title*

HTMLの**&lt;title&gt;**タグに配置するタイトルを指定します。**title**タグに指定したテキストは、ウィンドウのタイトルや、このページに対して作成されたブラウザのブックマーク(お気に入り)に表示されます。このタイトルにはHTMLタグを含めないでください。タイトルにHTMLタグが含まれていると、ブラウザがタグを正しく解釈できません。**title**タグ内の内部の二重引用符はエスケープ文字を使用してマークします。**-windowtitle**オプションを省略すると、**javadoc**コマンドは、**-windowtitle**オプションのかわりに、**-doctitle**オプションの値を使用します。たとえば、**javadoc -windowtitle "Java SE Platform" com.mypackage**です。

-doctitle *title*

概要サマリー・ファイルの最上部の近くに配置するタイトルを指定します。**title**タグに指定したテキストは中央揃えになり、レベル1の見出しとして、上部ナビゲーション・バーのすぐ下に置かれます。**title**タグにはHTMLタグおよび空白文字を含めることができますが、その場合、タイトルを引用符で囲む必要があります。**title**タグの内部で引用符を使用する場合は、エスケープする必要があります。たとえば、**javadoc -header "&lt;b&gt;Java Platform &lt;/b&gt;&lt;br&gt;v1.4" com.mypackage.**となります。

-title *title*

すでに存在しません。Javadoc 1.2のベータ版にしか存在していませんでした。このオプションは、**-doctitle**という名前に変更されました。名前を変更した理由は、このオプションが、ウィンドウのタイトルではなくドキュメントのタイトルを定義することを明確にするためです。

-header *header*

各出力ファイルの最上部に配置するヘッダー・テキストを指定します。ヘッダーは、ナビゲーション・バーの右上に配置されます。**header**にはHTMLタグおよび空白文字を含めることができますが、その場合、**header**を引用符で囲む必要があります。ヘッダー内部の引用符にはエスケープ文字を使用します。たとえば、**javadoc -header "&lt;b&gt;Java Platform &lt;/b&gt;&lt;br&gt;v1.4" com.mypackage.**となります。

-footer *footer*

各出力ファイルの最下部に配置するフッター・テキストを指定します。*footer*の値は、ナビゲーション・バーの右下に配置されます。**footer**にはHTMLタグおよび空白文字を含めることができますが、その場合、**footer**を引用符で囲む必要があります。フッター内部の引用符にはエスケープ文字を使用します。

-top

各出力ファイルの最上部に配置するテキストを指定します。

-bottom *text*

各出力ファイルの最下部に配置するテキストを指定します。このテキストは、下部ナビゲーション・バーより下の、ページの最下部に配置されます。テキストにはHTMLタグおよび空白文字を含めることができますが、その場合、テキストを引用符で囲む必要があります。テキスト内部の引用符にはエスケープ文字を使用します。

-link *extdocURL*

既存のJavadocにより生成された外部参照クラスのドキュメントへのリンクを作成します。*extdocURL*引数は、リンク先として指定する、Javadocにより生成された外部ドキュメントを含むディレクトリの絶対URLまたは相対URLです。指定した**javadoc**コマンドの実行で、複数の**-link**オプションを指定して複数のドキュメントへのリンクを作成できます。

このディレクトリ内にpackage-listファイルが存在する必要があります(存在しない場合は、**-linkoffline**オプションを使用します)。**javadoc**コマンドは、package-listファイルからパッケージ名を読み取った後、そのURLでこれらのパッケージにリンクします。**javadoc**コマンドの実行時に、**extdocURL**の値が、作成された**&lt;A HREF&gt;**リンク内にコピーされます。したがって、**extdocURL**はファイルではなくディレクトリへのURLである必要があります。*extdocURL*に絶対リンクを使用すると、ユーザーのドキュメントを任意のWebサイト上のドキュメントにリンクできます。相対位置へリンクするのみの場合は相対リンクを使用できます。相対リンクを使用する場合、渡す値は宛先ディレクトリから、リンクされているパッケージを含むディレクトリへである必要があります(**-d**オプションで指定)。絶対リンクを指定する場合、通常、HTTPリンクを使用します。ただし、Webサーバーを持たないファイル・システムにリンクする場合は、ファイル・リンクを使用できます。生成されたドキュメンテーションにアクセスする全員が同じファイル・システムを共有する場合にのみファイル・リンクを使用します。どの場合も、どのオペレーティング・システムでも、URLが絶対または相対のいずれでも、また**http:**または**file:**のいずれでも、URLメモ: Uniform Resource Locators (http://www.ietf.org/rfc/rfc1738.txt)に指定されているとおり、区切り文字としてスラッシュを使用します。

```
-link  http://<host>/<directory>/<directory>/.../<name>
-link file://<host>/<directory>/<directory>/.../<name>
-link <directory>/<directory>/.../<name>


 
```

-linkofflineおよび-linkオプションの違い

次の場合に、**-link**オプションを使用します。

•外部APIドキュメントへの相対パスを使用する場合。

•外部APIドキュメントへの絶対URLを使用する場合(そのURLに接続し、読取りを行うことがシェルによって許可されている場合)。

外部APIドキュメントへの絶対URLを使用する場合(そのURLに接続し、読取りを行うことがシェルによって許可されていない場合)は**-linkoffline**オプションを使用します。このような状況は、ファイアウォールの内側からファイアウォールの外側にあるドキュメントにリンクしようとする場合に発生します。

**例 1** 外部ドキュメントへの絶対リンク

http://docs.oracle.com/javase/8/docs/api/index.htmlに示すような、**java.lang**、**java.io**およびその他のJavaプラットフォーム・パッケージにリンクする場合、次のコマンドを使用します

```
javadoc -link http://docs.oracle.com/javase/8/docs/api/ com.mypackage


 
```

このコマンドは、Java SEプラットフォーム・パッケージへのリンク持つ**com.mypackage**パッケージのドキュメントを生成します。生成ドキュメントには、たとえばクラス**trees**内の**Object**クラスへのリンクが含まれています。**-sourcepath**や**-d**などの他のオプションは表示されません。

**例 2** 外部ドキュメントへの相対リンク

この例では、2つのパッケージがあり、そのドキュメントは**javadoc**コマンドを複数回実行した結果生成されたものです。さらに、これらのドキュメントは相対パスで分割されています。パッケージは、APIである**com.apipackage**と、SPI(サービス・プロバイダ・インタフェース)であるc**om.spipackage**です。ドキュメントの格納先は、docs/api/com/apipackageとdocs/spi/com/spipackageです。APIパッケージのドキュメントはすでに生成されていて、docsが現在のディレクトリである場合、APIドキュメントへのリンクを持つSPIパッケージをドキュメント化するには、次のコマンドを実行します。**javadoc -d ./spi -link ../api com.spipackage**

**-link**オプションは、宛先ディレクトリ(docs/spi)からの相対パスです。

注意

**-link**オプションを使用すると、コードからは参照されていても、今回の**javadoc**の実行ではドキュメント化されないクラスにリンクできるようになります。リンクから有効なページに移動できるようにするには、それらのHTMLページがある場所を調べ、その場所を**extdocURL**に指定する必要があります。これにより、サードパーティのドキュメンテーションがjava.\*ドキュメンテーション( http://docs.oracle.com)へリンクすることができます。**javadoc**コマンドで、現在の実行で生成しているドキュメンテーション内のAPIへのリンクのみを作成する場合には、**-link**オプションを省略します。**-link**オプションを指定しないと、**javadoc**コマンドは外部参照のためのドキュメンテーションへのリンクを作成しません。ドキュメンテーションが存在するのかどうか、またはどこに存在するのかがわからないからです。**-link**オプションでは、生成ドキュメンテーション内の複数の場所にリンクを作成できます。ソース・ファイルの処理を参照してください。もう1つの用途は、パッケージ・セットの間にクロスリンクを作成することです。一方のパッケージ・セットに対して**javadoc**コマンドを実行した後、他方のパッケージ・セットに対して**javadoc**コマンドを再度実行すると、両セット間に双方向のリンクを作成できます。

クラスの参照方法

表示される外部参照クラスへのリンクの場合(およびそのテキスト・ラベルだけではなく)、クラスは次の方法で参照される必要があります。メソッドの本体でクラスを参照するのみでは十分ではありません。**import**文、宣言のいずれかで参照する必要があります。次に、クラス**java.io.File**を参照する方法の例を示します。

すべてのタイプのimport文の場合。ワイルドカードによるインポート、名前による明示的なインポート、または**java.lang.\***に対する自動インポート。

Java SE 1.3.*n*および1.2.*n*では、名前による明示的なインポートのみ機能します。ワイルドカードによる**import**文も、**import java.lang.\***の自動インポートも機能しません。

宣言の場合: **void mymethod(File f) {}**

参照は、メソッド、コンストラクタ、フィールド、クラスまたはインタフェースの戻り型またはパラメータ・タイプ、あるいは実装、拡張またはスロー文にあります。

重要な結果として、**-link**オプションを使用しても、この制限のために誤って表示されないリンクが多数発生する可能性があります。テキストはハイパーテキスト・リンクが付けられずに表示されます。リンクが表示する警告から、これらのリンクを認識できます。クラスを正しく参照し、それによってリンクを追加するための最も簡単な方法はそのクラスをインポートすることです。

パッケージ・リスト

**-link**オプションには、**javadoc**コマンドによって生成されるpackage-listという名前のファイルが、**-link**オプションに指定したURLに存在していることが必要です。package-listファイルは、その場所にあるドキュメント化されたパッケージの名前のリストが入った単純なテキスト・ファイルです。前述の例では、**javadoc**コマンドは、指定したURLでpackage-listという名前のファイルを検索し、パッケージ名を読み取って、そのURLでこれらのパッケージにリンクします。

たとえば、Java SE APIのパッケージ・リストは http://docs.oracle.com/javase/8/docs/api/package-listにあります。

このパッケージ・リストは次のような内容で始まっています。

```
java.applet
java.awt
java.awt.color
java.awt.datatransfer
java.awt.dnd
java.awt.event
java.awt.font
and so on ....


 
```

**-link**オプションを指定せずに**javadoc**を実行した場合、外部参照クラスに属する名前を見つけると、その名前をリンクなしで出力します。一方、**-link**オプションを指定した場合、**javadoc**コマンドは、指定された*extdocURL*の場所にあるpackage-listファイルでそのパッケージ名を検索します。パッケージ名が見つかると、*extdocURL*が名前の前に付加されます。

すべてのリンクが正しく機能するためには、外部参照のすべてのドキュメントが、指定したURLに存在する必要があります。**javadoc**コマンドは、指定されたpackage-listが存在するかどうかのみをチェックし、これらのページが存在するかどうかはチェックしません。

複数のリンク

複数の**-link**オプションを指定すると、任意の数の外部生成ドキュメントへのリンクを作成できます。Javadoc 1.2には、複数の**-link**オプションを指定できないという既知のbugがあります。これはJavadoc 1.2.2で修正されました。リンクする外部ドキュメントごとに、次のように別々のリンク・オプションを指定します。**javadoc -link extdocURL1 -link extdocURL2 ... -link extdocURLn com.mypackage** *extdocURL1*、*extdocURL2*、.**.. extdocURLn**は、それぞれ外部ドキュメントのルートを指し、各ルートには、package-listという名前のファイルが入っています。

クロスリンク

以前に作成された複数のドキュメントをクロスリンクする場合、ブートストラップが必要になることがあります。どのドキュメントについてもpackage-listが存在していない場合は、最初のドキュメントに対して**javadoc**コマンドを実行する時点で、2番目のドキュメントのpackage-listはまだ存在していません。したがって、外部リンクを作成するには、2番目のドキュメントを生成した後で、最初のドキュメントを生成しなおす必要があります。

この場合、最初のドキュメント生成の目的は、package-listを作成することです(パッケージ名を把握している場合は手動で作成してもかまいません)。次に、2番目のドキュメントとその外部リンクを生成します。必要な外部のpackage-listファイルが存在しない場合は、**javadoc**コマンドから警告が出力されます。

-linkoffline *extdocURL packagelistLoc*

このオプションは**-link**オプションのバリエーションです。両方とも、Javadocにより生成された外部参照クラスのドキュメントへのリンクを作成します。**javadoc**コマンドがWeb接続を使用してドキュメントにアクセスできないとき、Web上のドキュメントにリンクするには、**-link**o**ffline**オプションを使用します。外部ドキュメントのpackage-listファイルにアクセスできないとき、またはこのファイルが**extdocURL**で指定された場所には存在せず、**packageListLoc**で指定できる別の場所(通常ローカル)に存在するとき、**-linkoffline**オプションを使用します。**extdocURL**にWorld Wide Web上でしかアクセスできない場合は、**-linkoffline**オプションを指定することにより、ドキュメントの生成時に**javadoc**コマンドがWebに接続する必要があるという制約がなくなります。もう1つの用途は、ドキュメントを更新するための回避策として使用することです。パッケージのセット全体に対して**javadoc**コマンドを実行した後、変更した一部のパッケージに対してのみ**javadoc**コマンドを再度実行して、更新されたファイルを、オリジナルのセットに挿入できるようにします。次に例を示します。**-linkoffline**オプションは引数を2つ取ります。第1引数は**&lt;a href&gt;**リンクに組み込まれる文字列を指定し、第2引数はpackage-listの検索場所を**-linkoffline**に伝えます。

•**extdocURL**の値は、リンク先として指定する、Javadocにより生成された外部ドキュメントを含むディレクトリの絶対URLまたは相対URLです。相対URLの場合、値は、生成先ディレクトリ(**-d**オプションで指定)からリンク先となるパッケージのルートへの相対パスにする必要があります。詳細は、**-link**オプションの*extdocURL*を参照してください。

•**packagelistLoc**の値は、外部ドキュメントのpackage-listファイルを含むディレクトリへのパスまたはURLです。これは、URL (http:またはfile:)でもファイル・パスでもかまいません。また、絶対パスと相対パスのどちらでもかまいません。相対パスの場合は、**javadoc**コマンドが実行される現在のディレクトリからの相対パスとして指定します。package-listファイル名を含めないでください。

指定した**javadoc**コマンドの実行で、複数の**-link**オプションを指定できます。Javadoc 1.2.2より前では、**-linkfile**オプションは1回しか指定できませんでした。

外部ドキュメントへの絶対リンク

http://docs.oracle.com/javase/8/docs/api/index.htmlに示すような、**java.lang**、 **java.io**およびその他のJava SEパッケージにリンクする必要がある場合があります。

ただし、シェルにはWebアクセス権がありません。この場合、次を行います。

1.ブラウザでpackage-listファイルを開きます(http://docs.oracle.com/javase/8/docs/api/package-list)

2.ファイルをローカル・ディレクトリに保存し、このローカル・コピーを第2引数**packagelistLoc**で指定します。この例では、パッケージ・リスト・ファイルはカレント・ディレクトリ(.)に保存されています。

次のコマンドは、Java SEプラットフォーム・パッケージへのリンクを持つc**om.mypackage**パッケージのドキュメントを生成します。生成ドキュメントには、たとえばクラス**trees**内の**Object**クラスへのリンクが含まれています。**-sourcepath**など、他の必要なオプションは表示されません。

```
javadoc -linkoffline http://docs.oracle.com/javase/8/docs/api/ .  com.mypackage 


 
```

外部ドキュメントへの相対リンク

**-linkoffline**を相対パスとともに使用することはあまりありません。理由は単純で、通常は**-link**で間に合うからです。**-linkoffline**オプションを使用する場合、通常、package-listファイルはローカルで、相対リンクを使用する場合はリンク先のファイルもローカルなので、通常は**-linkoffline**オプションの2つの引数に、異なるパスを指定する必要はありません。2つの引数が同一の場合、**-link**オプションを使用できます。

package-listファイルの手動での作成

package-listファイルがまだ存在しなくても、ドキュメントのリンク先のパッケージ名がわかっている場合は、このファイルのコピーを手動で作成し、**packagelistLoc**でそのパスを指定することができます。**com.apipackage**が最初に生成された時点で**com.spipackage**のパッケージ・リストが存在しないという前出のケースが一例として挙げられます。この方法は、パッケージ名はわかっているものの、まだ公開されていない、新しい外部ドキュメントにリンクするドキュメントを生成する必要がある場合に便利です。また、package-listファイルが生成されないJavadoc 1.0または1.1で生成されたパッケージ用にpackage-listファイルを作成する場合にも、この方法が使用できます。同様に、2つの企業が未公開のpackage-listファイルを共有できるため、クロスリンクを設定したドキュメントを同時にリリースすることも可能になります。

複数ドキュメントへのリンク

参照先の生成ドキュメントごとに1回、**-linkoffline**オプションを含めることができます。

```
javadoc -linkoffline extdocURL1 packagelistLoc1 -linkoffline extdocURL2
packagelistLoc2 ...


 
```

ドキュメントの更新

プロジェクトに何十または何百のパッケージが含まれる場合にも、**-linkoffline**オプションを使用できます。ソース・ツリー全体ですでに**javadoc**コマンドを実行したことがある場合、ドキュメンテーション・コメントにわずかな変更を迅速に加え、ソース・ツリーの一部で**javadoc**コマンドを再実行することができます。2回目の実行は、ドキュメンテーション・コメントを変更し、宣言は変更しない場合にのみ正しく処理されることに注意してください。ソース・コードに対して宣言を追加、削除、または変更した場合は、索引、パッケージ・ツリー、継承されるメンバーのリスト、「使用」ページなどの場所で、リンクが壊れることがあります。

まず、この新しい小規模な実行で使用する、新しい生成先ディレクトリ(updateなど)を作成します。この例では、元の生成先ディレクトリの名前はhtmlです。最も単純な例では、htmlディレクトリの親ディレクトリに移動します。**-linkoffline**オプションの第1引数にカレント・ディレクトリ(.)を設定し、第2引数にpackage-listが検索されるhtmlへの相対パスを設定し、更新するパッケージのパッケージ名のみを渡します。

```
javadoc -d update -linkoffline . html com.mypackage


 
```

**javadoc**コマンドの終了後、update/com/package内の生成されたクラスのページをコピーし(概要や索引は除く)、html/com/package内の元のファイルに上書きします。

-linksource

各ソース・ファイル(行番号付き)のHTMLバージョンを作成し、標準HTMLドキュメントからソース・ファイルへのリンクを追加します。リンクは、ソース・ファイル内に宣言されているクラス、インタフェース、コンストラクタ、メソッド、フィールドに対して作成されます。デフォルト・コンストラクタ、生成されたクラスなどに対しては作成されません。

このオプションは、**-public**、**-package**、**-protected**および**-private**の各オプションとは関係なく、非公開のクラス、フィールド、非公開のメソッドの本体をはじめとする組み込まれたソース・ファイル内のすべての非公開実装の詳細を公開します。**-private**オプションもあわせて指定しないかぎり、非公開のクラスやインタフェースの一部には、リンクを介してアクセスできないことがあります。

各リンクは、その宣言内の識別子名の上に作成されます。たとえば、**Button**クラスのソース・コードへのリンクは、**Button**という語の上に作成されます。

```
public class Button extends Component implements Accessible


 
```

**Button**クラスの**getLabel**メソッドのソース・コードへのリンクは、**getLabel**という語の上に作成されます。

```
public String getLabel()


 
```

-group groupheading *packagepattern:packagepattern*

概要ページの複数のパッケージを、指定したグループに分けて、グループごとに表を作成します。各グループは、それぞれ別の**-group**オプションで指定します。グループは、コマンド行で指定された順序でページに表示されます。パッケージは、グループ内でアルファベット順になっています。指定した**-group**オプションでは、**packagepattern**式のリストに一致するパッケージが、見出しとして*groupheading*を持つ1つの表に表示されます。

•**groupheading**には、任意のテキストを指定でき、空白を含めることができます。指定したテキストは、グループの表見出しになります。

•**packagepattern**の値には、任意のパッケージ名の先頭部分とそれに続く1つのアスタリスク(\*)で任意のパッケージ名を指定できます。アスタリスクは使用できる唯一のワイルドカードで、任意の文字に一致する、という意味です。1つのグループには、コロン(:)で区切って複数のパターンを含めることができます。パターンまたはパターン・リストでアスタリスクを使用する場合、パターン・リストは**"java.lang\*:java.util"**のように引用符で囲む必要があります。

**-group**オプションを指定しない場合は、見出し*Packages*および適切な小見出しを持つ1つのグループに配置されます。小見出しにすべてのドキュメント化されるパッケージ(すべてのグループ)が含まれるわけではない場合、残りのパッケージは「その他のパッケージ」というサブ見出しを持つ独立したグループに入れられます。

たとえば、次の**javadoc**コマンドでは、3つのドキュメント化されたパッケージが*「コア」*、*「拡張」*および*「その他のパッケージ」*に分けられます。**java.lang\***では、最後のドット(.)を指定していません。**java.lang.\***のようにドットを入れると、 **java.lang**パッケージは除外されることになります。

```
javadoc -group "Core Packages" "java.lang*:java.util"
        -group "Extension Packages" "javax.*"
        java.lang java.lang.reflect java.util javax.servlet java.new


 
```

**コア・パッケージ**

**java.lang**

**java.lang.reflect**

**java.util**

**拡張機能パッケージ**

**javax.servlet**

**Other Packages**

**java.new**

-nodeprecated

非推奨のAPIをドキュメントに生成しないようにします。このオプションを指定すると、**-nodeprecatedlist**オプションを指定した場合と同じ効果があり、ドキュメントの他の部分全体でも、非推奨のAPIが生成されません。このオプションは、コードを記述しているとき、非推奨のコードによって気を散らされたくない場合に便利です。

-nodeprecatedlist

非推奨のAPIのリストを含むファイル(deprecated-list.html)、およびナビゲーション・バーのそのページへのリンクが生成されないようにします。**javadoc**コマンドでは、引き続き、ドキュメントの他の部分では、非推奨のAPIが生成されます。このオプションは、非推奨のAPIがソース・コードに含まれておらず、ナビゲーション・バーをすっきりと見せる場合に便利です。

-nosince

生成ドキュメントから、**@since**タグに関連付けられた**「導入されたバージョン」**セクションを省略します。

-notree

生成ドキュメントから、クラスおよびインタフェースの階層ページを省略します。これらのページには、ナビゲーション・バーの「階層ツリー」ボタンからアクセスできます。デフォルトでは、階層が生成されます。

-noindex

生成ドキュメントから、索引を省略します。デフォルトでは、索引が生成されます。

-nohelp

出力の各ページの最上部と最下部にあるナビゲーション・バーから「ヘルプ」リンクを省略します。

-nonavbar

通常、生成されるページの最上部と最下部に表示されるナビゲーション・バー、ヘッダー、およびフッターを生成しないようにします。**-nonavbar**オプションは**-bottom**オプションに影響を与えません。**-nonavbar**オプションは、印刷するためにのみファイルをPostScriptやPDFに変換する場合など、内容のみが重要で、ナビゲーションの必要がない場合に便利です。

-helpfile *path\\filename*

最上部および最下部のナビゲーション・バーの「ヘルプ」リンクのリンク先となる代替ヘルプ・ファイルpath\\filenameのパスを指定します。このオプションが指定されていないと、**javadoc**コマンドは、**javadoc**コマンド内でハードコードされているヘルプ・ファイルhelp-doc.htmlを自動作成します。このオプションを使用すると、デフォルトをオーバーライドできます。ファイル名にはどんな名前でも指定でき、help-doc.htmlに限定されません。**javadoc**コマンドは、次の例のように、ナビゲーション・バー内のリンクを必要に応じて調整します。

```
javadoc -helpfile /home/user/myhelp.html java.awt.


 
```

-stylesheet *path/filename*

代替HTMLスタイルシート・ファイルのパスを指定します。このオプションが指定されていないと、**javadoc**コマンドは、**javadoc**コマンド内でハードコードされているスタイルシート・ファイルstylesheet.cssを自動作成します。このオプションを使用すると、デフォルトをオーバーライドできます。ファイル名にはどんな名前でも指定でき、stylesheet.cssに限定されません。

```
javadoc -stylesheet file /home/user/mystylesheet.css com.mypackage


 
```

-serialwarn

**@serial**タグがない場合は、コンパイル時に警告を生成します。デフォルトでは、Javadoc 1.2.2以降では、直列化の警告は生成されません。以前のリリースとは逆の動作です。このオプションを使用すると、直列化の警告が表示されるので、デフォルトの直列化可能フィールドと**writeExternal**メソッドを適切にドキュメント化するのに役立ちます。

-charset *name*

このドキュメント用のHTML文字セットを指定します。この名前は、IANA RegistryのCharacter Sets (http://www.iana.org/assignments/character-sets)に示された、優先MIME名である必要があります。

たとえば、**javadoc -charset "iso-8859-1" mypackage**は次の行を生成された各ページのヘッダーに挿入します。

```
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">


 
```

この**META**タグは、HTML標準(4197265および4137321)のHTML Document Representation (http://www.w3.org/TR/REC-html40/charset.html#h-5.2.2)に記載されています。

およびオプションも参照してください。

-docencoding *name*

生成されるHTMLファイルのエンコーディングを指定します。この名前は、IANA RegistryのCharacter Sets (http://www.iana.org/assignments/character-sets)に示された、優先MIME名である必要があります。

**-docencoding**オプションを省略し、**-encoding**オプションを使用すると、生成されたHTMLファイルの暗号化は**-encoding**オプションで特定されます。例: **javadoc -docencoding "iso-8859-1" mypackage**およびオプションも参照してください。

-keywords

HTMLキーワード&lt;META&gt;タグを、クラスごとに生成されるファイルに追加します。これらのタグは、&lt;META&gt;タグを検索するサーチ・エンジンがページを見つける場合に役立ちます。インターネット全体を検索する検索エンジンのほとんどは&lt;META&gt;タグを参照しません。ページが誤用している可能性があるからです。自身のWebサイトへの検索を制限する、企業により提供される検索エンジンは、&lt;META&gt;タグを参照することで恩恵を受けることができます。&lt;META&gt;タグには、クラスの完全修飾名と、フィールドおよびメソッドの修飾されていない名前が含まれます。コンストラクタは、クラス名と同じであるため含まれません。たとえば、クラス**String**は次のキーワードで開始します。

```
<META NAME="keywords" CONTENT="java.lang.String class">
<META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER">
<META NAME="keywords" CONTENT="length()">
<META NAME="keywords" CONTENT="charAt()">


 
```

-tag *tagname*:Xaoptcmf:"*taghead*"

**javadoc**コマンドがドキュメンテーション・コメント内の引数を1つ取る単純なカスタム・ブロック・タグ**@tagname**を解釈できるようにします。これにより、**javadoc**コマンドはタグ名のスペルチェックを行うことができるので、ソース・コード内に存在するすべてのカスタム・タグについて、**-tag**オプションを組み込むことが重要です。今回の実行では出力されないタグは、**X**を付けて無効にします。**-tag**オプションは、タグの見出し*taghead*を太字で出力します。その次の行には、このオプションの1つの引数で指定したテキストが続きます。ブロック・タグと同様、この引数のテキストにはインライン・タグを含めることができます。このインライン・タグも解釈されます。出力は、引数を1つ取る標準のタグ(**@return**や**@author**など)の出力とよく似ています。*taghead*の値を省略すると、**tagname**が見出しとして表示されます。

**タグの配置**: **Xaoptcmf**引数により、ソース・コード内でタグを配置できる場所が決まり、タグを無効にできるかどうか(**X**を使用して)が決まります。タグの配置位置を制限しない場合は**a**を指定します。それ以外の文字の組合せも可能です。

**X** (タグの無効化)

**a** (すべて)

**o** (概要)

**p** (パッケージ)

**t** (タイプ、つまりクラスとインタフェース)

**c** (コンストラクタ)

**m** (メソッド)

**f** (フィールド)

**シングル・タグの例**: ソース・コード内の任意の位置で使用できるタグのタグ・オプションの例を示します。**-tag todo:a:"To Do:"**

**@todo**タグをコンストラクタ、メソッドおよびフィールドとのみ使用する場合、**-tag todo:cmf:"To Do:"**を使用します。

最後のコロン(:)は、パラメータ区切り文字ではなく、見出しテキストの一部になっています。**@todo**タグを含む、ソース・コード用のいずれかのタグ・オプションを使用します。たとえば、**@todo The documentation for this method needs work**です。

**タグ名内のコロン**: タグ名内でコロンを使用する場合はバックスラッシュを使用してエスケープします。次のドキュメンテーション・コメントには、**-tag ejb\\\\:bean:a:"EJB Bean:"**オプションを使用します。

```
/**
 * @ejb:bean
 */


 
```

**タグ名のスペルチェック**: 一部の開発者が必ずしも出力しないカスタム・タグをソース・コード内に配置することがあります。この場合、ソース・コード内のすべてのタグをリストし、出力するタグを有効にし、出力しないタグを無効にする必要があります。**X**を指定するとタグは無効になります。指定しないと、タグは有効になります。これにより、**javadoc**コマンドは、検出したタグが入力ミスなどによる不明タグであるかどうかを特定できます。このような場合に、**javadoc**コマンドから警告が出力されます。すでに配置されている値に**X**を追加できます。こうしておけば、**X**を削除するのみでタグを有効にすることができます。たとえば、**@todo**タグを出力で抑制する場合、**-tag todo:Xcmf:"To Do:"**を使用します。さらに簡単にする場合、**-tag todo:X**を使用します。構文**-tag todo:X**は、**@todo**タグがタグレットで定義されていても機能します。

**タグの順序**: **-tag**および**-taglet**オプションの順序によって、タグの出力順が決まります。カスタム・タグと標準タグを組み合せて使用することもできます。標準タグのタグ・オプションは、順序を決定するためだけのプレースホルダです。標準タグの名前のみを取ります。標準タグの小見出しは変更できません。これを次の例に示します。**-tag**オプションを指定しないと、**-taglet**オプションの位置により、順序が決まります。タグが両方とも存在する場合、コマンド行の最後にある方がその順序を決定します。これは、タグやタグレットがコマンド行に指定された順番に処理されるためです。たとえば、**-taglet**および**-tag**オプションが名前**todo**値を持つ場合、コマンド行に最後に指定されたものが順序を決定します。

**タグの完全セットの例**: この例では、出力のParametersとThrowsの間にTo Doを挿入します。**X**を使用して、**@example**タグが、ソース・コード内の今回の実行では出力されないタグであることも指定します。**@argfile**タグを使用する場合は、次のように、引数ファイル内の別々の行にタグを配置できます(行の継続を示す文字は不要)。

```
-tag param
-tag return
-tag todo:a:"To Do:"
-tag throws
-tag see
-tag example:X


 
```

**javadoc**コマンドがドキュメンテーション・コメントを解析する際に検索されたタグのうち、標準タグでも、**-tag**や**-taglet**オプションで渡されたタグでもないものはすべて不明タグとみなされ、警告がスローされます。

標準タグは、最初、デフォルトの順序でリスト内に内部的に格納されます。**-tag**オプションを使用すると、それらのタグはこのリストに追加されます。標準タグは、デフォルトの位置から移動されます。そのため、標準タグの**-tag**オプションを省略すると、それはデフォルトの位置に配置されたままになります。

**競合の回避**: 固有の名前空間を作成する場合、パッケージに使用されている**com.mycompany.todo**のようなドットで区切りの命名規則を使用できます。Oracleは、今後も名前にドットを含まない標準タグを作成します。ユーザーが作成したタグは、Oracleが定義する同じ名前のタグの動作をオーバーライドします。**@todo**という名前のタグまたはタグレットをユーザーが作成した場合、その後にOracleが同じ名前の標準タグを作成しても、そのタグまたはタグレットは常にユーザーが定義したのと同じ動作を保持します。

**注釈vs. Javadocタグ**: 一般に、追加する必要のあるマークアップが、ドキュメントに影響を与えたりドキュメントを生成したりするためのものである場合、そのマークアップはJavadocタグにします。それ以外の場合は注釈にします。JavadocツールでのDocコメントの記述方法のカスタム・タグと注釈に関する項 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#annotations)を参照してください。

**-taglet**オプションを使用して、より複雑なブロック・タグやカスタム・インライン・タグも作成できます。

-taglet *class*

そのタグのドキュメントの生成に使用するドックレットを起動するためのクラス・ファイルを指定します。**class**値の完全修飾名を使用します。このタグレットは、カスタム・タグのテキスト引数の数も定義します。タグレットは、これらの引数を受け付け、処理し、出力を生成します。タグレットの例を使用した豊富なドキュメントについては、タグレットの概要 (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/taglet/overview.html)を参照してください。

タグレットは、ブロックタグまたはインライン・タグで便利です。タグレットは任意の数の引数をとることができます。また、テキストを太字にする、箇条書きを作成する、テキストをファイルに書き出す、その他のプロセスを開始するなどのカスタム動作を実装できます。タグレットで指定できるのは、タグの配置場所と配置形式のみです。その他のすべての決定は、ドックレットによって行われます。タグレットを使用しても、包含クラスのリストからクラス名を削除するなどの処理は実行できません。ただし、タグのテキストをファイルに出力したり、別のプロセスをトリガーするなどの副作用は得られます。タグレットへのパスを指定するには、**-tagletpath**オプションを使用します。次に、生成されるページのParametersとThrowsの間にTo Doタグレットを挿入する例を示します。または、**-taglet**オプションをその**-tag**オプションのかわりに使用することができますが、読み取りが困難になる可能性があります。

```
-taglet com.sun.tools.doclets.ToDoTaglet
-tagletpath /home/taglets 
-tag return
-tag param
-tag todo
-tag throws
-tag see


 
```

-tagletpath *tagletpathlist*

tagletクラス・ファイルを検索するための検索パスを指定します。**tagletpathlist**には、コロン(:)で区切って複数のパスを含めることができます。**javadoc**コマンドは、指定されたパス以下のすべてのサブディレクトリを検索します。

-docfilesubdirs

doc-filesディレクトリのディープ・コピーを有効にします。宛先には、サブディレクトリとそのすべて内容が再帰的にコピーされます。たとえば、ディレクトリoc-files/example/imagesとその内容がすべてコピーされます。ここでも、サブディレクトリを除外する指定が可能です。

-excludedocfilessubdir *name1:name2*

指定された名前のdoc-filesサブディレクトリをすべて除外します。これにより、SCCSとその他のソース・コード制御サブディレクトリのコピーを防ぎます。

-noqualifier all | *packagename1*:*packagename2...*

出力されるクラス名から修飾パッケージ名を省略します。**-noqualifier**オプションの引数は、**all**(すべてのパッケージ修飾子を省略)、または修飾子として削除するパッケージのコロン区切りリスト(ワイルドカードも可)、のいずれかとなります。クラスまたはインタフェース名が表示される位置からパッケージ名が削除されます。ソース・ファイルの処理を参照してください。

次の例では、すべてのパッケージ修飾子を省略します。**-noqualifier all**

次の例では、**java.lang**および**java.io**パッケージ修飾子を省略します: **-noqualifier java.lang:java.io**。

次の例では、**java**で始まるパッケージ修飾子および**com.sun**サブパッケージを省略しますが、**javax**は省略しません。**-noqualifier java.\*:com.sun.\***

パッケージ修飾子が前述の動作に従って表示される場合、名前は適切に短縮されます。「名前が表示される方法」を参照してください。このルールは、**-noqualifier**オプションを使用するかどうかにかかわらず有効です。

-notimestamp

タイムスタンプが抑制されます。各ページの先頭近くにある、生成されたHTML内のHTMLコメントでタイムスタンプが隠されます。**-notimestamp**オプションは、**javadoc**コマンドを2つのソース・ベースで実行し、それらの間の差分**diff**を取得する場合に役立ちます。タイムスタンプによる**diff**の発生を防ぐからです(そうでないとすべてのページで**diff**になります)。タイムスタンプには**javadoc**コマンドのリリース番号が含まれ、現在では、**&lt;!-- Generated by javadoc (build 1.5.0\_01) on Thu Apr 02 14:04:52 IST 2009 --&gt;**のように表示されます。

-nocomment

主説明およびすべてのタグを含むコメント本文全体を抑制し、宣言のみを生成します。このオプションにより、元は異なる目的のためだったソース・ファイルを再利用し、新しいプロジェクトの早い段階でスケルトンHTMLドキュメントを作成できるようになります。

-sourcetab *tablength*

ソース内で各タブが使用する空白文字の数を指定します。

# コマンド行引数ファイル

**javadoc**コマンドを短くしたり簡潔にしたりするために、**javadoc**コマンドに対する引数(**-J**オプションを除く)が入った1つ以上のファイルを指定することができます。このことを利用すれば、どのオペレーティング・システム上でも、任意の長さの**javadoc**コマンドを作成できます。

引数ファイルには、**javac**のオプションとソース・ファイル名を自由に組み合せて記述できます。ファイル内の各引数は、スペースまたは改行で区切ります。ファイル名に埋め込まれた空白がある場合、ファイル名全体を二重引用符で囲みます。

引数ファイル内のファイル名は、引数ファイルの位置ではなく、現在のディレクトリに相対的となります。これらのリストでは、ワイルドカード(**\***)は使用できません。たとえば、\*.javaとは指定できません。アットマーク(@)を使用して、ファイルを再帰的に解釈することはできません。また、**-J**オプションもサポートされていません。このオプションは起動ツールに渡されますが、起動ツールでは引数ファイルをサポートしていないからです。

**javadoc**を実行するときに、各引数ファイルのパスとファイル名の先頭に@文字を付けて渡します。**javadoc**コマンドは、アットマーク(@)文字で始まる引数を見つけると、そのファイルの内容を展開して引数リストに挿入します。

**例 1** 単一の引数ファイル

**argfile**という名前の1つの引数ファイルを使用して、すべての**javadoc**コマンド引数を保持できます。**javadoc @argfile**次の例に示すように、この引数ファイルには両方のファイルの内容が含まれています。

**例 2** 2つの引数ファイル

次のように、2つの引数ファイルを作成できます。**javadoc**コマンドのオプション用に1つ、パッケージ名またはソース・ファイル名用に1つです。次のリストでは行継続文字を使用していません。

次の内容を含む、optionsという名前のファイルを作成します。

```
-d docs-filelist 
-use 
-splitindex
-windowtitle 'Java SE 7 API Specification'
-doctitle 'Java SE 7 API Specification'
-header '<b>Java(TM) SE 7</b>'
-bottom 'Copyright &copy; 1993-2011 Oracle and/or its affiliates. All rights reserved.'
-group "Core Packages" "java.*"
-overview /java/pubs/ws/1.7.0/src/share/classes/overview-core.html
-sourcepath /java/pubs/ws/1.7.0/src/share/classes


 
```

次の内容を含む、packagesという名前のファイルを作成します。

```
com.mypackage1
com.mypackage2
com.mypackage3


 
```

次のように、**javadoc**コマンドを実行します。

```
javadoc @options @packages


 
```

**例 3** パスを使用した引数ファイル

引数ファイルはパスを指定できますが、ファイル内のすべてのファイル名は、(**path1**や**path2**ではなく)次のように現在の作業ディレクトリに相対的となります。

```
javadoc @path1/options @path2/packages


 
```

**例 4** オプション引数

次に、**javadoc**コマンドのオプションに対する引数を引数ファイルに格納する例を示します。長い引数を指定できるので、**-bottom**オプションを使用します。次のようなテキスト引数を含む、bottomという名前のファイルを作成できます。

```
<font size="-1">
    <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/>
    Copyright &copy; 1993, 2011, Oracle and/or its affiliates. All rights reserved. <br/>
    Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
    Other names may be trademarks of their respective owners.</font>


 
```

**javadoc**コマンドを次のように実行します。 **javadoc -bottom @bottom @packages**

**-bottom**オプションを引数ファイルの最初に含めて、次のように**javadoc**コマンドを実行することもできます。**javadoc @bottom @packages**

# [JAVADOCコマンドの実行](#JAVADOC~2)

**javadoc**コマンドのリリース番号は**javadoc -J-version**オプションで特定できます。出力ストリームには標準ドックレットのリリース番号が含まれます。**-quiet**オプションで無効にできます。

Java言語で記述されたプログラムから**javadoc**コマンドを起動するには公開プログラマティック・インタフェースを使用します。このインタフェースは**com.sun.tools.javadoc.Main**にあります(また**javadoc**コマンドは再入可能です)。詳細は、標準ドックレット (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/standard-doclet.html#runningprogrammatically)を参照してください。

次の手順では、標準HTMLドックレットを呼び出します。カスタム・ドックレットを呼び出すには、**-doclet**および**-docletpath**オプションを使用しますドックレットの概要 (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html)を参照してください

## 簡単な例

**javadoc**コマンドは、パッケージ全体に対して実行することも、個々のソース・ファイルに対して実行することもできます。各パッケージ名は、それぞれのパッケージ名に対応するディレクトリ名を持ちます。

次の例では、ソース・ファイルは/home/src/java/awt/\*.javaにあります。生成先ディレクトリは/home/htmlです。

1つ以上のパッケージのドキュメント化

パッケージをドキュメント化するには、そのパッケージのソース・ファイルを、そのパッケージと同じ名前のディレクトリ内に格納する必要があります。

パッケージ名が(**java.awt.color**のようにドットで区切られた)複数の識別子から構成されている場合、後続の各識別子が下位のサブディレクトリ(ava/awt/colorなど)に対応している必要があります。

1つのパッケージのための複数のソース・ファイルを、異なる場所にあるそのような2つのディレクトリ・ツリーに分けて格納することもできます。ただし、その場合は**-sourcepath**によってその両方の場所を指定する必要があります。たとえば、src1/java/awt/colorとsrc2/java/awt/color。

ディレクトリの変更(**cd**コマンドを使用)または**-sourcepath**オプションにより、**javadoc**コマンドを実行できます。次の例で両方の選択肢を示します。

**例 1** 1つ以上のパッケージから再帰的に実行

この例では**javadoc**コマンドが任意のディレクトリから実行できるように、**-sourcepath**を使用し、再帰的処理のために**-subpackages**(1.4の新オプション)を使用します。これは、javaディレクトリのサブパッケージをたどりますが、**java.net**と**java.lang**をルートに持つパッケージは除外されます。**java.lang**のサブパッケージである**java.lang.ref**が除外される点に注意してください。また、他のパッケージ・ツリーを下方にたどるには、**java:javax:org.xml.sax**のように、それらのパッケージの名前を**-subpackages**の引数に追加します。

```
javadoc -d /home/html -sourcepath /home/src -subpackages java -exclude


 
```

**例 2** ルートへの移動および明示的なパッケージの実行

完全修飾されたパッケージの親ディレクトリに移動します。次に、ドキュメント化する1つ以上のパッケージの名前を指定して**javadoc**コマンドを実行します。

```
cd /home/src/
javadoc -d /home/html java.awt java.awt.event


 
```

また、他のパッケージ・ツリーを下方にたどるには、j**ava:javax:org.xml.sax**のように、それらのパッケージの名前を**-subpackages**の引数に追加します。

**例 3** 1つのツリーの明示的なパッケージの任意のディレクトリから実行

この場合、現在のディレクトリがどこかは問題ではありません。**javadoc**コマンドを実行し、最上位パッケージの親ディレクトリを指定して**-sourcepath**オプションを使用します。ドキュメント化する1つ以上のパッケージの名前を指定します。

```
javadoc -d /home/html -sourcepath /home/src java.awt java.awt.event


 
```

**例 4** 複数のツリーの明示的なパッケージの任意のディレクトリから実行

**javadoc**コマンドを実行し、各ツリーのルートへのパスのコロン区切りリストを指定して**-sourcepath**オプションを使用します。ドキュメント化する1つ以上のパッケージの名前を指定します。指定したパッケージのすべてのソース・ファイルが、1つのルート・ディレクトリの下に存在する必要はありませんが、ソース・パスで指定された場所のどこかで見つかる必要があります。

```
javadoc -d /home/html -sourcepath /home/src1:/home/src2 java.awt java.awt.event


 
```

すべてのケースでj**ava.awt**および**java.awt.even**tパッケージ内の**public**および**protected**クラスとインタフェースについて、HTML形式のドキュメントが生成され、指定された生成先ディレクトリにHTMLファイルが保存されます。2つ以上のパッケージが生成されているので、ドキュメントは、パッケージのリスト、クラスのリスト、およびメインのクラス・ページという3つのHTMLフレームを持つことになります。

1つ以上のクラスのドキュメント化

また、1つ以上のソース・ファイルを渡して、**javadoc**コマンドを実行することもできます。**javadoc**は、次の2つの方法のいずれかで実行できます。1つはディレクトリを変更する方法(**cd**を使用)、もう1つはソース・ファイルへのパスを完全に指定する方法です。相対パスは、現在のディレクトリを起点とします。ソース・ファイルを渡すときは、**-sourcepath**オプションは無視されます。アスタリスク(\*)のようなコマンド行ワイルドカードを使用すると、クラスのグループを指定できます。

**例 1** ソース・ディレクトリに変更

ソースを保持するディレクトリに変更します。次に、ドキュメント化する1つ以上のソース・ファイルの名前を指定して**javadoc**コマンドを実行します。

この例では、**Button**クラスと**Canvas**クラス、および名前が**Graphics**で始まるクラスについて、HTML形式のドキュメントが生成されます。パッケージ名ではなくソース・ファイルが**javadoc**コマンドに引数として渡されているので、ドキュメントは、クラスのリストとメイン・ページという2つのフレームを持つことになります。

```
cd /home/src/java/awt
javadoc -d /home/html Button.java Canvas.java Graphics*.java


 
```

**例 2** パッケージのルート・ディレクトリに変更

これは、同じルートからの別のサブパッケージの個々のソース・ファイルをドキュメント化するのに役立ちます。パッケージのルート・ディレクトリに移り、各ソース・ファイルを、ルートからのパスとともに指定します。

```
cd /home/src/
javadoc -d /home/html java/awt/Button.java java/applet/Applet.java


 
```

**例 3** 任意のディレクトリからのファイルのドキュメント化

この場合、現在のディレクトリがどこかは問題ではありません。ドキュメント化するソース・ファイルへの絶対パス(または現在のディレクトリからの相対パス)を指定して**javadoc**コマンドを実行します。

```
javadoc -d /home/html /home/src/java/awt/Button.java
/home/src/java/awt/Graphics*.java


 
```

パッケージおよびクラスのドキュメント化

パッケージ全体と個々のクラスを同時に指定してドキュメント化することもできます。次に、前述の2つの例を組み合せた例を示します。**-sourcepath**オプションは、パッケージへのパスに対しては使用できますが、個々のクラスへのパスに対しては使用できません。

```
javadoc -d /home/html -sourcepath /home/src java.awt
/home/src/java/applet/Applet.java


 
```

## 実際の例

次のコマンド行および**makefile**バージョンの**javadoc**コマンドをJavaプラットフォームAPIで実行します。Java SE 1.2で約1500個のpublicおよびprotectedクラスのドキュメントを生成するには、180MBのメモリーを使用します。どちらの例もオプションの引数で絶対パスが使用されているため、任意のディレクトリから同じ**javadoc**コマンドを実行できます。

コマンド行の例

次のコマンドは、一部のシェルに対して長すぎる可能性があります。この制限を回避するには、コマンド行引数ファイルを使用します。または、シェル・スクリプトを記述します。

この例では、**packages**は処理するパッケージを含む名前で、**java.applet** **java.lang**などです。各オプションの、一重引用符で囲まれた引数の内側には、改行文字を挿入できません。たとえば、この例をコピー・アンド・ペーストする場合は、**-bottom**オプションから改行文字を削除してください。

```
javadoc -sourcepath /java/jdk/src/share/classes \
-overview /java/jdk/src/share/classes/overview.html \
-d /java/jdk/build/api \
-use \
-splitIndex \
-windowtitle 'Java Platform, Standard Edition 7 API Specification' \
-doctitle 'Java Platform, Standard Edition 7 API Specification' \
-header '<b>Java(TM) SE 7</b>' \
-bottom '<font size="-1">
<a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/>
Copyright &copy; 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/>
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.</font>' \
-group "Core Packages" "java.*:com.sun.java.*:org.omg.*" \
-group "Extension Packages" "javax.*" \
-J-Xmx180m \  
@packages


 
```

プログラマティック・インタフェース

Javadoc Access APIでは、新しいプロセスを実行しなくても、JavadocツールをJavaアプリケーションから直接起動できます。

たとえば、次の文はコマンド**javadoc -d /home/html -sourcepath /home/src -subpackages java -exclude java.net:java.lang com.example**と同等です。

```
import javax.tools.DocumentationTool;
import javax.tools.ToolProvider;


 
public class JavaAccessSample{
    public static void main(String[] args){
        DocumentationTool javadoc = ToolProvider.getSystemDocumentationTool();
        int rc = javadoc.run( null, null, null,
                 "-d", "/home/html",
                 "-sourcepath", "home/src",
                 "-subpackages", "java",
                 "-exclude", "java.net:java.lang",
                 "com.example");
     }
 }


 
```

**run**メソッドの最初の3つの引数は、入力、標準出力、および標準エラー・ストリームを指定します。**Null**は**System.in**、**System.out**および**System.err**それぞれのデフォルト値です。

## [makefileの例](#makefile)

ここでは、GNU **makefile**の例を示します。**makefile**の引数は、一重引用符で囲みます。Windows **makefile**の例については、Javadoc FAQの**makefiles**のセクション (http://www.oracle.com/technetwork/java/javase/documentation/index-137483.html#makefiles)を参照してください

```
javadoc -sourcepath $(SRCDIR)              \   /* Sets path for source files   */
        -overview $(SRCDIR)/overview.html  \   /* Sets file for overview text  */
        -d /java/jdk/build/api             \   /* Sets destination directory   */
        -use                               \   /* Adds "Use" files             */
        -splitIndex                        \   /* Splits index A-Z             */
        -windowtitle $(WINDOWTITLE)        \   /* Adds a window title          */
        -doctitle $(DOCTITLE)              \   /* Adds a doc title             */
        -header $(HEADER)                  \   /* Adds running header text     */
        -bottom $(BOTTOM)                  \   /* Adds text at bottom          */
        -group $(GROUPCORE)                \   /* 1st subhead on overview page */
        -group $(GROUPEXT)                 \   /* 2nd subhead on overview page */
        -J-Xmx180m                         \   /* Sets memory to 180MB         */
        java.lang java.lang.reflect        \   /* Sets packages to document    */
        java.util java.io java.net         \
        java.applet
        
WINDOWTITLE = 'Java(TM) SE 7 API Specification'
DOCTITLE = 'Java(TM) Platform Standard Edition 7 API Specification'
HEADER = '<b>Java(TM) SE 7</font>'
BOTTOM = '<font size="-1">
      <a href="http://bugreport.sun.com/bugreport/">Submit a bug or feature</a><br/>
      Copyright &copy; 1993, 2011, Oracle and/or its affiliates. All rights reserved.<br/>
      Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
      Other names may be trademarks of their respective owners.</font>'
GROUPCORE = '"Core Packages" "java.*:com.sun.java.*:org.omg.*"'
GROUPEXT  = '"Extension Packages" "javax.*"'
SRCDIR = '/java/jdk/1.7.0/src/share/classes'


 
```

## 注意

•**-windowtitle**オプションを省略すると、**javadoc**コマンドによってドキュメント・タイトルがウィンドウ・タイトルにコピーされます。**-windowtitle**オプションのテキストは、**-doctitle**オプションと同じですが、HTMLタグは含まれません。これは、HTMLタグが、ウィンドウ・タイトル内にそのままのテキストとして表示されるのを防ぐためです。

•**-footer**オプションを省略すると、**javadoc**コマンドによってヘッダー・テキストがフッターにコピーされます。

•この例では必要ありませんが、**-classpath**と**-link**も重要なオプションです。

# 一般的なトラブルシューティング

•**javadoc**コマンドは有効なクラス名を含むファイルのみを読み取ります。**javadoc**コマンドがファイルの内容を正しく読み取っていない場合は、クラス名が有効であることを確認します。ソース・ファイルの処理を参照してください。

•一般的なbugおよびトラブルシューティングのヒントについては、Javadoc FAQ (http://www.oracle.com/technetwork/java/javase/documentation/index-137483.html)を参照してください。

# エラーと警告

エラーおよび警告メッセージには、ファイル名と宣言行(ドキュメンテーション・コメント内の特定の行ではない)の行番号が含まれます。

たとえば、メッセージ**「エラー: Class1.javaを読み込めません」**は、**javadoc**コマンドが**Class1.java**を現在のディレクトリにロードしようとしていることを意味します。クラス名はそのパス(絶対または相対)で表示されます。

# 環境

CLASSPATH

**CLASSPATH**は、**javadoc**コマンドがユーザー・クラス・ファイルの検出に使用するパスを提供する環境変数です。この環境変数は、**-classpath**オプションによってオーバーライドされます。ディレクトリはセミコロン(Windowsの場合)またはコロン(Oracle Solarisの場合)で区切ります。

**Windowsの例**: **.;C:\\classes;C:\\home\\java\\classes**

**Oracle Solarisの例**: **.:/home/classes:/usr/local/java/classes**

# 関連項目

•[javac(1)](/man/os/openjdk-8/javac.1)

•[java(1)](/man/os/openjdk-8/java.1)

•[jdb(1)](/man/os/openjdk-8/jdb.1)

•[javah(1)](/man/os/openjdk-8/javah.1)

•[javap(1)](/man/os/openjdk-8/javap.1)

# 関連ドキュメント

•Javadocテクノロジ (http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/index.html)

•クラスの検出方法 (http://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html)

•JavadocツールでのDocコメントの記述方法 (http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html)

•URLメモ、Uniform Resource Locators (http://www.ietf.org/rfc/rfc1738.txt)

•HTML標準、HTML Document Representation (4197265および4137321) (http://www.w3.org/TR/REC-html40/charset.html#h-5.2.2)

2015年3月3日 JDK 8

---

Document: javadoc(1) from openjdk-8 8.504-r4 (Chainguard OS)
Source: https://github.com/openjdk/jdk8u.git
