モジュールjdk.compiler


モジュールjdk.compiler
「システムJavaコンパイラ」の実装とそのコマンドラインの等価javacを定義します。

com.sun.source.*パッケージはコンパイラ・ツリーAPIを提供: javacjavadocおよび関連ツールで使用される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は、JavaCompiler APIを介してツールを呼び出すときにオプションが使用された場合、スローされます。ToolProviderまたは従来のMain APIを介して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で使用できるすべての文字列を示します。
SuppressWarningsでサポートされる文字列
String警告の抑制 ...
auxiliaryclass ソース・ファイルで非表示になり、他のファイルから使用される補助クラス
cast 不要なキャストの使用
classfile クラス・ファイルの内容に関連する問題
deprecation 非推奨アイテムの使用
dep-ann ドキュメントのコメントで非推奨としてマークされているが、@Deprecated注釈を使用していないアイテム
divzero 定数整数による除算0
empty ifの後の空の文
exports モジュールのエクスポートに関する問題
fallthrough switch文の1つのケースから次のケースへのフォール・スルー
finally 通常終了しないfinally
lossy-conversions 複合代入での可逆変換
missing-explicit-ctor エクスポートされたパッケージのpublicクラスおよびprotectedクラスに明示的なコンストラクタがありません
module モジュール・システム関連の問題
opens モジュール・オープンに関する問題
overloads メソッドのオーバーロードに関する問題
overrides メソッドのオーバーライドに関する問題
path コマンドラインのパス要素が無効です
preview プレビュー言語機能の使用
rawtypes rawタイプの使用
removal 削除マークが付いたAPIの使用
requires-automatic requires句での自動モジュールの使用
requires-transitive-automatic requires transitiveの自動モジュール
serial serialVersionUIDフィールドを持たないSerializableクラス、またはSerializableクラスおよびExternalizableインタフェース内の他の疑わしい宣言
static インスタンスを使用した静的メンバーへのアクセス
strictfp strictfp修飾子の使用が不要
synchronization 値ベースのクラスのインスタンスでの同期試行
text-blocks テキスト・ブロックのインデントに矛盾する空白文字があります
try tryブロックの使用に関する問題(that is, try-with-resources)
unchecked チェックされていない演算
varargs 危険でないvarargメソッド
doclint:accessibility ドキュメントのコメントにあるアクセシビリティの問題
doclint:all ドキュメントのコメントに含まれるすべての問題
doclint:html ドキュメントのコメントにHTMLの問題が見つかりました
doclint:missing ドキュメントのコメントにアイテムがありません
doclint:reference ドキュメントのコメントで見つかった参照の問題
doclint:syntax ドキュメントのコメントに構文の問題が見つかりました
モジュール・グラフ:
jdk.compilerのモジュール・グラフjdk.compilerのモジュール・グラフ
ツール・ガイド:
javac
導入されたバージョン:
9
  • パッケージ

    エクスポート
    パッケージ
    説明
    ドキュメンテーション・コメントを抽象構文ツリー(AST)として表すためのインタフェースを提供します。
    ソース・コードを抽象構文ツリー(Abstract Syntax Tree、AST)として表すためのインタフェースを提供します。
    抽象構文ツリー(Abstract Syntax Tree、AST)の操作のためのユーティリティを提供します。
    このパッケージは、javacツールのレガシー・エントリ・ポイントを提供します。
    間接的エクスポート
  • モジュール

    必須
    修飾子
    モジュール
    説明
    transitive
    言語モデル、注釈処理、およびJavaコンパイラAPIを定義します。
  • サービス

    提供
    説明
    プログラムからJavaプログラミング言語コンパイラを起動するインタフェースです。
    プログラムから呼出し可能なツールの共通インタフェースです。
    ToolProvider.findFirst("javac")を使用して、javacツールへのコマンドライン・アクセスに相当するToolProviderのインスタンスを取得します。
    使用
    説明
    javacプラグインのインタフェースです。
    注釈プロセッサのインタフェース。