ネイティブ・イメージ・ビルド・オプション
GraalVMエディションによっては、native-image
ビルダーのオプションが異なる場合があります。次のオプションは、GraalVM Community EditionとEnterprise Editionの両方でサポートされています:
-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に<flag>
を直接渡します-O<level>
: 最適化を行わない場合は0、基本的な最適化を行う場合は1 (デフォルト)です--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
、all
を指定できます(引数を指定しない場合、デフォルトはall
です)。たとえば、--enable-monitoring=heapdump,jvmstat
です。--enable-sbom
: パッシブ検査のためにイメージに含めるソフトウェア部品表(SBOM)の形式を指定します。現在、cyclonedxのみがサポートされており、デフォルトです。--enable-preview
: このリリースのプレビュー機能をクラスが利用できるようにします--enable-monitoring
: 実行時にVMを検査できるようにモニタリング機能を有効にします。カンマ区切りリストには、heapdump、jfr、jvmstat、allを指定できます(引数を指定しない場合、デフォルトはallです)。たとえば、--enable-monitoring=heapdump,jvmstat
です。--enable-sbom
: パッシブ検査のためにイメージに含めるソフトウェア部品表(SBOM)の形式を指定します。現在、cyclonedx
のみがサポートされており、デフォルトです。--enable-url-protocols
: 有効にするURLプロトコルをカンマ区切りでリストします--features
: 完全修飾機能実装クラスのカンマ区切りリスト--force-fallback
: フォールバック・ネイティブ実行可能ファイルのビルドを強制します--gc=<value>
: ネイティブ・イメージ・ガベージ・コレクタの実装を選択します。<value>
で使用可能なオプションは、G1ガベージ・コレクタの場合はG1
(GraalVM Enterpriseのみ)、Epsilonガベージ・コレクタの場合はepsilon
、シリアル・ガベージ・コレクタの場合はserial
(デフォルト)です。--initialize-at-build-time
: イメージの生成時に初期化されるパッケージとクラス(およびそのすべてのスーパークラスを暗黙的に含む)のカンマ区切りリストです。空の文字列はすべてのパッケージを示します。--initialize-at-run-time
: イメージのビルド時ではなく、実行時に初期化される必要があるパッケージとクラス(およびそのすべてのサブクラスを暗黙的に含む)のカンマ区切りリストです。現在、空の文字列はサポートされていません。--install-exit-handlers
:java.lang.Terminator
終了ハンドラを指定します--libc
: 使用するlibc
ネイティブ・ライブラリ実装を選択します。使用可能な実装は、glibc
およびmusl
です。--link-at-build-time
: ネイティブ実行可能ファイルのビルド時に型を完全に定義する必要があります。引数なしで使用する場合、オプションのスコープ内のすべてのクラスを完全に定義する必要があります。--link-at-build-time-paths
: 指定されたクラスまたはモジュールパス・エントリのすべての型を、ネイティブ実行可能ファイルのビルド時に完全に定義する必要があります--list-cpu-features
: ターゲット・プラットフォームに固有のCPU機能を表示し、終了します--native-compiler-options
: コードのコンパイルの問合せに使用されるカスタムCコンパイラ・オプションを指定します--native-compiler-path
: コードのコンパイルおよびリンクの問合せに使用されるCコンパイラへのカスタム・パスを指定します--native-image-info
: ネイティブ・ツールチェーン情報およびネイティブ実行可能ファイルのビルド設定を表示します--no-fallback
: スタンドアロン・ネイティブ実行可能ファイルをビルドするか、障害をレポートします--pgo
: AOTコンパイル済コードのプロファイルに基づく最適化のために収集されたデータを読み取るファイルのカンマ区切りリストです(何も指定しなければdefault.iprofから読み取られます)。GraalVM Enterpriseのみ--pgo-instrument
: AOTコンパイル済コードを計測して、プロファイルに基づく最適化のためのデータをdefault.iprofファイルに収集します。GraalVM Enterpriseのみ--report-unsupported-elements-at-runtime
: ネイティブ実行可能ファイルのビルド時にエラーをレポートするのではなく、実行時の初回アクセス時にサポート対象外のメソッドおよびフィールドの使用状況をレポートします--shared
: 共有ライブラリをビルドします--static
: 静的にリンクされたネイティブ実行可能ファイルをビルドします(libc
およびzlib
静的ライブラリが必要です)--target
: (- 形式の)ネイティブ・イメージ・コンパイル・ターゲットを選択します。デフォルトはホストのOSとアーキテクチャのペアです --trace-class-initialization
: クラスの初期化がトレースされる完全修飾クラス名のカンマ区切りリストを指定します--trace-object-instantiation
: オブジェクトのインスタンス化がトレースされる完全修飾クラス名のカンマ区切りリストを指定します-da
: 生成されたネイティブ実行可能ファイル内で指定粒度のアサーションを無効にします。-da[:[packagename]|:[classname]
または-disableassertions[:[packagename]|:[classname]
バリアントもサポートされています。-dsa
: すべてのシステム・クラス内でアサーションを無効にします-ea
: 生成されたネイティブ実行可能ファイル内で指定粒度のアサーションを有効にします。-ea[:[packagename]|:[classname]
または-enableassertions[:[packagename]|:[classname]
バリアントもサポートされています。-esa
: すべてのシステム・クラス内でアサーションを有効にします-g
: デバッグ情報を生成します。GraalVM Communityで生成されるデバッグ情報は、GraalVM Enterpriseで生成されるデバッグ情報とは異なります。
マクロ・オプション
--language:nfi
: Truffleネイティブ関数インタフェース言語を使用可能にします--language:python
: Pythonを実行可能ファイルの言語として使用可能にします--language:R
: Rを実行可能ファイルの言語として使用可能にします--language:regex
: Truffle正規表現エンジンを使用可能にします--language:wasm
: WebAssemblyを実行可能ファイルの言語として使用可能にします--language:java
: Javaを実行可能ファイルの言語として使用可能にします--language:llvm
: LLVMビットコードを実行可能ファイルの言語として使用可能にします--language:js
: JavaScriptを実行可能ファイルの言語として使用可能にします--language:nodejs
: Node.jsを実行可能ファイルに対して使用可能にします--language:ruby
: Rubyを実行可能ファイルの言語として使用可能にします--tool:coverage
: GraalVMでサポートされている言語にソース・コード・カバレッジ・サポートを追加します--tool:insight
: プログラムの実行時の動作への詳細なアクセスをサポートし、ユーザーが起動サイトまたは割当てサイトで値と型を検査できるようにします--tool:dap
: VS CodeなどのIDEでDebug Adapter Protocolを提供するデバッガ・ポートをイメージで開けるようにします--tool:chromeinspector
: GraalVMでサポートされている言語にデバッグ・サポートを追加します--tool:insightheap
: 実行中にイメージ・ヒープのリージョンのスナップショットを取得します--tool:lsp
: VS CodeなどのIDEで互換性のあるデバッガを後でGraalVMにアタッチできるように言語サーバー・プロトコル・サポートを追加します--tool:sandbox
: Truffleサンドボックスのリソース制限を有効にします。詳細は、専用ドキュメントを参照してください--tool:profiler
: GraalVMでサポートされている言語にプロファイリング・サポートを追加します
--language:nodejs
、--language:python
、--language:ruby
および--language:R
、--language:wasm
および--language:llvm
ポリグロット・マクロ・オプションは、対応する言語がベースGraalVMインストールに追加されると使用可能になります(GraalVMアップデータ・ガイドを参照)。
非標準オプション
非標準オプションのヘルプを表示するには、native-image --help-extra
を実行します。
--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 >]
: イメージのビルド時にデバッガにアタッチします(デフォルト・ポートは8000です)--diagnostics-mode
: 診断フォルダへのビルド情報のロギングを有効にします--dry-run
: ネイティブ実行可能ファイルのビルドに使用されるコマンドラインを出力します-V<key>=<value>
:native-image.properties
ファイルのプレースホルダの値を指定します--add-exports
: 値<module>/<package>=<target-module>(,<target-module>)*
は、<module>
を更新して、モジュール宣言に関係なく、<package>
を<target-module>
にエクスポートします。<target-module>
は、名前のないすべてのモジュールにエクスポートするためにALL-UNNAMED
にできます--add-opens
: 値<module>/<package>=<target-module>(,<target-module>)*
は、モジュール宣言に関係なく、<module>
を更新して<package>
を<target-module>
に開きます--add-reads
: 値<module>=<target-module>(,<target-module>)*
は、モジュール宣言に関係なく、<module>
を更新して<target-module>
を読み取ります。<target-module>
をALL-UNNAMED
にして、名前のないモジュールをすべて読み取ることができます
ネイティブ・イメージ・オプションも、ホスト型オプションおよび実行時オプションとして区別されます。