ネイティブ・イメージ・ビルド・オプション
GraalVMのバージョンによっては、native-image
ビルダーのオプションが異なる場合があります。
-cp, -classpath, --class-path <class search path of directories and zip/jar files>
: クラス・ファイルを検索するディレクトリ、JARアーカイブおよびZIPアーカイブの:
(Windowsでは;
)区切りリストです-p <module path>, --module-path <module path>
: ディレクトリの:
(Windowsでは;
)区切りリスト。各ディレクトリは、モジュールのディレクトリです。--add-modules <module name>[,<module name>...]
: 初期モジュールに加えて解決するルート・モジュールを追加します。<module name>
には、ALL-DEFAULT
、ALL-SYSTEM
、ALL-MODULE-PATH
も指定できます-D<name>=<value>
: システム・プロパティを設定します-J<flag>
:native-image
ビルダーを実行するJVMにオプションを直接渡します--diagnostics-mode
: クラスの初期化、置換などを含む診断出力を有効にします。--enable-preview
: このリリースのプレビュー機能をクラスが利用できるようにします--verbose
: 詳細な出力を有効にします--version
: 製品バージョンを出力して終了します--help
: このヘルプ・メッセージを出力します--help-extra
: 非標準オプションのヘルプを出力します--auto-fallback
: 可能な場合はスタンドアロン・ネイティブ実行可能ファイルをビルドします--configure-reflection-metadata
: 起動されていないメソッドに対するリフレクション・オブジェクトのランタイム・インスタンス化を有効にします--enable-all-security-services
: 生成されたネイティブ実行可能ファイルにすべてのセキュリティ・サービス・クラスを追加します--enable-http
: ネイティブ実行可能ファイルでHTTPサポートを有効にします--enable-https
: ネイティブ実行可能ファイルでHTTPSサポートを有効にします--enable-monitoring
: 実行時にVMを検査できるようにモニタリング機能を有効にします。カンマ区切りリストに、heapdump
、jfr
、jvmstat
、jmxserver
(試験段階)、jmxclient
(試験段階)、またはall
(非推奨の動作: 引数が指定されていない場合はデフォルトでall
)を含めることができます。たとえば、--enable-monitoring=heapdump,jfr
です。--enable-sbom
: 受動的な検査のために、ネイティブ実行可能ファイルまたは共有ライブラリにソフトウェア部品表(SBOM)を埋め込みます。カンマ区切りリストに、cyclonedx
、strict
(引数が指定されていない場合はデフォルトでcyclonedx
)、またはSBOMをネイティブ実行可能ファイルの出力ディレクトリに保存するためのexport
を含めることができます。オプションのstrict
フラグは、SBOM内のライブラリと一致するクラスがない場合、ビルドを中止します。たとえば、--enable-sbom=cyclonedx,strict
です。(GraalVM Community Editionでは使用できません。)--enable-url-protocols
: 有効にするURLプロトコルをカンマ区切りでリストします--features
: 完全修飾機能実装クラスのカンマ区切りリスト--force-fallback
: フォールバック・ネイティブ実行可能ファイルのビルドを強制します--gc=<value>
: ネイティブ・イメージ・ガベージ・コレクタの実装を選択します。<value>
で使用可能なオプションは、G1ガベージ・コレクタではG1
(GraalVM Community Editionでは使用できません)、Epsilonガベージ・コレクタではepsilon
、シリアル・ガベージ・コレクタではserial
(デフォルト)です。--initialize-at-build-time
: ネイティブ実行可能ファイルの生成時に初期化されるパッケージとクラス(およびそのすべてのスーパークラスを暗黙的に含む)のカンマ区切りリスト。空の文字列はすべてのパッケージを示します。--initialize-at-run-time
: 生成時ではなく、実行時に初期化される必要があるパッケージとクラス(およびそのすべてのサブクラスを暗黙的に含む)のカンマ区切りリスト。現在、空の文字列はサポートされていません。--install-exit-handlers
:java.lang.Terminator
終了ハンドラを指定します--libc
: 使用するlibc
実装を選択します。使用可能な実装は、glibc
、musl
、bionic
です。--link-at-build-time
: 実行可能ファイルのビルド時に型を完全に定義する必要があります。引数なしで使用する場合、オプションのスコープ内のすべてのクラスを完全に定義する必要があります。--link-at-build-time-paths
: 指定されたクラスまたはモジュールパス・エントリのすべての型を実行可能ファイルのビルド時に完全に定義する必要があります--list-cpu-features
: ターゲット・プラットフォームに固有のCPU機能を表示し、終了します--list-modules
: 監視可能なモジュールをリストし、終了します--native-compiler-options
: 問合せコードのコンパイルに使用されるカスタムCコンパイラ・オプションを指定します--native-compiler-path
: コードのコンパイルおよびリンクの問合せに使用されるCコンパイラへのカスタム・パスを指定します--native-image-info
: ネイティブ・ツールチェーン情報および実行可能ファイルのビルド設定を表示します--no-fallback
: スタンドアロン・ネイティブ実行可能ファイルをビルドするか、障害をレポートします--pgo
: AOTコンパイルされたコードのプロファイルに基づく最適化のために収集されたデータを読み取るファイルのカンマ区切りリスト(何も指定しなければdefault.iprofから読み取られます)。(GraalVM Community Editionでは使用できません。)--pgo-instrument
: AOTコンパイルされたコードをインストゥルメントして、プロファイルに基づく最適化のためのデータをdefault.iprofファイルに収集します。(GraalVM Community Editionでは使用できません。)--report-unsupported-elements-at-runtime
: 実行可能ファイルのビルド時にエラーをレポートするのではなく、実行時の初回アクセス時にサポート対象外のメソッドおよびフィールドの使用状況をレポートします--shared
: 共有ライブラリをビルドします--silent
: ビルド出力を抑制します--static
: 静的にリンクされた実行可能ファイルをビルドします(libc
およびzlib
静的ライブラリが必要です)--target
:native-image
のコンパイル・ターゲットを選択します(- 形式)。デフォルトはホストのOSとアーキテクチャのペアです。 --trace-class-initialization
: クラスの初期化がトレースされる完全修飾クラス名のカンマ区切りリストを指定します--trace-object-instantiation
: オブジェクトのインスタンス化がトレースされる完全修飾クラス名のカンマ区切りリストを指定します-O<level>
: コードの最適化を制御します(使用可能なバリエーションとして開発用のクイック・ビルド・モードのためのb
があります)。0
- 最適化なし、1
- 基本的な最適化、2
- 積極的な最適化(デフォルト)-da
、-da[:[packagename]|:[classname]
、disableassertions[:[packagename]|:[classname]
: 実行時に指定した粒度でアサーションを無効にします-dsa
、-disablesystemassertions
: 実行時にすべてのシステム・クラス内のアサーションを無効にします-ea
、-ea[:[packagename]|:[classname]
、enableassertions[:[packagename]|:[classname]
: 実行時に指定した粒度でアサーションを有効にします-esa
、-enablesystemassertions
: 実行時にすべてのシステム・クラス内でアサーションを有効にします-g
: デバッグ情報を生成します-march
: 特定のマシン・タイプの命令を生成します。デフォルトは、AMD64ではx86-64-v3
、AArch64ではarmv8-a
です。ネイティブ実行可能ファイルが同じマシンまたは同じCPU機能を持つマシンにデプロイされる場合、最高の互換性のために-march=compatibility
を使用するか、最高のパフォーマンスを得るために-march=native
を使用します。使用可能なすべてのマシン・タイプをリストするには、-march=list
を使用します。-o
: 生成される出力ファイルの名前
マクロ・オプション
--language:nfi
: Truffleネイティブ関数インタフェース言語を使用可能にします--tool:coverage
: GraalVMでサポートされている言語にソース・コード・カバレッジ・サポートを追加します--tool:insight
: プログラムの実行時の動作への詳細なアクセスをサポートし、ユーザーが起動サイトまたは割当てサイトで値と型を検査できるようにします--tool:dap
: Visual Studio CodeなどのIDEでDebug Adapter Protocolを提供するデバッガ・ポートをイメージで開けるようにします--tool:chromeinspector
: GraalVMでサポートされている言語にデバッグ・サポートを追加します--tool:insightheap
: 実行中にイメージ・ヒープのリージョンのスナップショットを取得します--tool:lsp
: Visual Studio CodeなどのIDEで互換性のあるデバッガを後でGraalVMにアタッチできるように言語サーバー・プロトコル・サポートを追加します--tool:sandbox
: Truffleサンドボックスのリソース制限を有効にします。詳細は、専用ドキュメントを参照してください--tool:profiler
: GraalVMでサポートされている言語にプロファイル・サポートを追加します
--language:js
、--language:nodejs
、--language:python
、--language:ruby
、--language:R
、--language:wasm
、--language:llvm
、--language:regex
(Truffle正規表現エンジンを有効化)ポリグロット・マクロ・オプションは、対応する言語がベースGraalVM JDKに追加されると使用可能になります。
非標準オプション
非標準オプションのヘルプを表示するには、native-image --help-extra
を実行します。
--exclude-config
: クラスパス/モジュールパス・パターンとリソース・パターンのカンマ区切りのペアの構成を除外します。たとえば、‘–exclude-config foo.jar,META-INF\/native-image\/.*.properties’は、'foo.jar'という名前のすべてのJARにある'META-INF/native-image'内のすべての.propertiesファイルを無視します。--expert-options
: エキスパート用のイメージ・ビルド・オプションをリストします--expert-options-all
: エキスパート用のすべてのイメージ・ビルド・オプションをリストします(各自の責任で使用)Extra help availableとマークされたオプションには、--expert-options-detail
で表示できるヘルプが含まれています--expert-options-detail
: カンマ区切りリストとして指定したオプションに関するすべてのヘルプを表示します。*
を渡すと、それを含むすべてのオプションの追加ヘルプが表示されます--configurations-path <search path of option-configuration directories>
: オプション構成ディレクトリとして扱われるディレクトリのカンマ区切りリストです--debug-attach[=< port (* can be used as host meaning bind to all interfaces)>]
: イメージのビルド時にデバッガにアタッチします(デフォルト・ポートは8000です)--diagnostics-mode
: 診断フォルダへのイメージ・ビルド情報のロギングを有効にします。--dry-run
: ビルドに使用されるコマンドラインを出力します--bundle-create[=new-bundle.nib]
: イメージのビルドに加えて、後でそのイメージを再ビルドできるネイティブ・イメージ・バンドル・ファイル(*.nibfile)を作成します。バンドル・ファイルが渡されると、指定された名前でバンドルが作成されます。それ以外の場合、バンドルファイル名はイメージ名から導出されます。両方のバンドル・オプションを--dry-run
と組み合せると、実際のイメージ・ビルドなしでバンドル操作のみを実行できます。--bundle-apply=some-bundle.nib
: イメージは、バンドルを作成するために元々ネイティブ・イメージに渡されたものとまったく同じ引数とファイルを使用して、指定されたバンドル・ファイルからビルドされます。--bundle-apply
の後に追加の--bundle-create
が渡された場合、指定されたバンドル引数とその後に渡された追加の引数に基づいて、新しいバンドルが書き込まれます。たとえば、native-image --bundle-apply=app.nib --bundle-create=app_dbg.nib -g
は、指定された_app.nib_バンドルに基づいて新しいバンドルを作成します。新しいバンドルが-gオプションも使用する以外、両方のバンドルは同じです。 -E<env-var-key>[=<env-var-value>]
: イメージのビルド中にネイティブ・イメージが特定の環境変数にアクセスできるようにします。オプションのが指定されていない場合、環境変数の値はネイティブ・イメージの起動元の環境から取得されます。 -V<key>=<value>
:native-image.properties
ファイルのプレースホルダの値を指定します--add-exports
: 値<module>/<package>=<target-module>(,<target-module>)
は、モジュール宣言に関係なく、<package>
を<target-module>
にエクスポートするために<module>
を更新します。<target-module>
をALL-UNNAMED
にすると、名前のないすべてのモジュールにエクスポートできます--add-opens
: 値<module>/<package>=<target-module>(,<target-module>)
は、モジュール宣言に関係なく、<package>
を<target-module>
に対して開くように<module>
を更新します。--add-reads
: 値<module>=<target-module>(,<target-module>)
は、モジュール宣言に関係なく、<target-module>
を読み取るように<module>
を更新します。<target-module>
をALL-UNNAMED
にすると、名前のないモジュールをすべて読み取ることができます。
ネイティブ・イメージ・オプションは、ホスト型オプションおよび実行時オプションとして区別もされます。