モジュールjdk.compiler
com.sun.source.*パッケージはコンパイラ・ツリーAPIを提供: javac、javadocおよび関連ツールで使用されるJavaソース・コードおよびドキュメントのコメントを表す抽象ツリー(ASTs)にアクセスするためのAPI。
 
javac
 このモジュールは、ToolProviderおよびToolサービス・プロバイダ・インタフェース(SPI)を使用してjavacへのコマンドライン・アクセスと同等の機能を提供し、JavaCompiler SPIを介してより柔軟なアクセスを提供します。
 ツールのインスタンスは、ToolProvider.findFirstまたは"javac"という名前の「サービス・ローダー」を呼び出すことによって取得できます。
 
 また、JavaCompilerから取得したJavaCompiler.CompilationTaskのインスタンスは、Abstract Syntax Tree (AST)など、javacの下位レベルにアクセスするために、JavacTaskにダウン・キャストできます。
このモジュールは、FileSystemProvider APIを使用してファイルシステム・プロバイダを特定します。 特に、これは、コンパイラがJARファイルを読み取れるようにするには、jdk.zipfsモジュールのようなjarファイルシステム・プロバイダを使用可能にする必要があることを意味します。 
 
オプションおよび環境変数
javacでサポートされているオプションおよび環境変数の完全なセットは、「javacツール・ガイド」にあります。 ただし、コンパイラがAPIを介して呼び出される場合は、いくつかの制限があります。- -Jオプションはサポートされていません。 APIの呼び出しに使用されるVMでは、必要なVMオプションを設定する必要があります。- IllegalArgumentExceptionは、- JavaCompilerAPIを介してツールを呼び出すときにオプションが使用された場合、スローされます。- ToolProviderまたは従来の- MainAPIを介してjavacを呼び出すときにオプションが使用された場合、エラーが報告されます。
- "クラスパス・ワイルドカード"機能はサポートされていません。 この機能はネイティブランチャでのみサポートされます。 APIを介してツールを起動する場合、必要なすべてのjarファイルを - --class-pathオプションまたは- CLASSPATH環境変数に直接含める必要があります。 APIを介してツールを呼び出すと、クラス・パスのすべてのコンポーネントが文字どおりに取得され、一致するディレクトリまたはファイルがない場合は無視されます。- -Xlint:pathsオプションを使用すると、不足しているコンポーネントに関する警告を生成できます。
JavaCompilerインタフェースを介してコンパイラを起動する場合、次の制限が適用されます。
 - 引数ファイル(so-called @-files)はサポートされていません。 このようなファイルの内容は、このAPIを使用してツールを起動するときに提供されるオプションのリストに直接含める必要があります。 このAPIを介してツールを起動するときにオプションが使用された場合、 - IllegalArgumentExceptionがスローされます。
- 環境変数 - JDK_JAVAC_OPTIONSはサポートされていません。 環境変数で定義されたオプションは、APIの起動時に指定されたオプションのリストに直接含める必要があります。環境変数内の値は無視されます。
- 情報 ( - --help,- --help-extended,- --versionや- --full-versionなど)を取得するためにのみ使用されるオプションはサポートされていません。 このAPIを介してツールを呼び出すときにこれらのオプションのいずれかが使用された場合、- IllegalArgumentExceptionがスローされます。
- パス関連のオプションは、JavaCompiler.getTask(java.io.Writer, javax.tools.JavaFileManager, javax.tools.DiagnosticListener<? super javax.tools.JavaFileObject>, java.lang.Iterable<java.lang.String>, java.lang.Iterable<java.lang.String>, java.lang.Iterable<? extends javax.tools.JavaFileObject>)の呼び出し時に使用されるファイル・マネージャによって異なります。 "standard"オプション(--class-path、--module-pathなど)は、デフォルトのファイル・マネージャまたはそこから導出されたファイル・マネージャを使用する場合に使用できます。 異なるファイル・マネージャを使用するときは、これらのオプションを使用できない可能性があり、異なるオプションを使用できる場合があります。 このAPIを介してツールを呼び出すときにツールまたはファイル・マネージャに不明なオプションが使用された場合、IllegalArgumentExceptionがスローされます。
CLASSPATH環境変数は、APIを介してコンパイラを起動する際に有効ですが、使用することはお薦めしません。 VMを起動したあとは環境変数を設定解除できないため、コンパイラを呼び出すために使用されるVMを起動するときに環境変数が設定されないようにすることをお勧めします。 ただし、値が設定されている場合は、コンパイラを呼び出すときに--class-pathオプションを使用するか、JavaCompilerインタフェースを介してコンパイラを呼び出すときにファイル・マネージャでStandardLocation.CLASS_PATHを設定することによって、そのような値をオーバーライドできます。 
 SuppressWarnings
JLS 9.6.4.5では、Javaコンパイラによって生成される可能性のある警告を抑制するために使用できる多数の文字列を指定します。 また、javacは他の種類の警告を抑制するために使用できる他の文字列もサポートしています。 次の表に、@SuppressWarningsで使用できるすべての文字列を示します。 
 | String | 警告の抑制 ... | 
|---|---|
| auxiliaryclass | ソース・ファイルで非表示になり、他のファイルから使用される補助クラス | 
| cast | 不要なキャストの使用 | 
| classfile | クラス・ファイルの内容に関連する問題 | 
| deprecation | 非推奨アイテムの使用 | 
| dep-ann | ドキュメントのコメントで非推奨としてマークされているが、 @Deprecated注釈を使用していないアイテム | 
| divzero | 定数整数による除算 0 | 
| empty | ifの後の空の文 | 
| exports | モジュールのエクスポートに関する問題 | 
| fallthrough | switch文の1つのケースから次のケースへのフォール・スルー | 
| finally | 通常終了しない finally句 | 
| incubating | インキュベート・モジュールの使用 | 
| lossy-conversions | 複合代入での可逆変換 | 
| missing-explicit-ctor | エクスポートされたパッケージのpublicクラスおよびprotectedクラスに明示的なコンストラクタがありません | 
| module | モジュール・システム関連の問題 | 
| opens | モジュール・オープンに関する問題 | 
| overloads | メソッドのオーバーロードに関する問題 | 
| overrides | メソッドのオーバーライドに関する問題 | 
| path | コマンドラインのパス要素が無効です | 
| preview | プレビュー言語機能の使用 | 
| rawtypes | rawタイプの使用 | 
| removal | 削除マークが付いたAPIの使用 | 
| restricted | 制限されたメソッドの使用 | 
| requires-automatic | requires句での自動モジュールの使用 | 
| requires-transitive-automatic | requires transitiveの自動モジュール | 
| serial | serialVersionUIDフィールドを持たないSerializableクラス、またはSerializableクラスおよびExternalizableインタフェース内の他の疑わしい宣言 | 
| static | インスタンスを使用した静的メンバーへのアクセス | 
| strictfp | strictfp修飾子の使用が不要 | 
| synchronization | 値ベースのクラスのインスタンスでの同期試行 | 
| text-blocks | テキスト・ブロックのインデントに矛盾する空白文字があります | 
| this-escape | サブクラスが初期化される前に thisをリークするスーパークラス・コンストラクタ | 
| try | tryブロックの使用に関する問題(that is, try-with-resources) | 
| unchecked | チェックされていない演算 | 
| varargs | 危険でないvarargメソッド | 
| doclint:accessibility | ドキュメントのコメントにあるアクセシビリティの問題 | 
| doclint:all | ドキュメントのコメントに含まれるすべての問題 | 
| doclint:html | ドキュメントのコメントにHTMLの問題が見つかりました | 
| doclint:missing | ドキュメントのコメントにアイテムがありません | 
| doclint:reference | ドキュメントのコメントで見つかった参照の問題 | 
| doclint:syntax | ドキュメントのコメントに構文の問題が見つかりました | 
- モジュール・グラフ:
- ツール・ガイド:
- javac
- 導入されたバージョン:
- 9
- 
パッケージエクスポートパッケージ説明ドキュメンテーション・コメントを抽象構文ツリー(AST)として表すためのインタフェースを提供します。ソース・コードを抽象構文ツリー(Abstract Syntax Tree、AST)として表すためのインタフェースを提供します。抽象構文ツリー(Abstract Syntax Tree、AST)の操作のためのユーティリティを提供します。このパッケージは、javacツールのレガシー・エントリ・ポイントを提供します。間接的エクスポート
- 
モジュール必須
- 
サービス提供型説明プログラムからJavaプログラミング言語コンパイラを起動するインタフェースです。プログラムから呼出し可能なツールの共通インタフェースです。ToolProvider.findFirst("javac")を使用して、javacツールへのコマンドライン・アクセスに相当するToolProviderのインスタンスを取得します。使用