戻る

JAR ファイルからネイティブ実行可能ファイルを構築する

クラスファイル、JAR ファイル、またはモジュールからネイティブ実行可能ファイルを構築できます。このガイドでは、JAR ファイルからネイティブ実行可能ファイルを構築する方法を説明します。

現在の作業ディレクトリにある JAR ファイルからネイティブ実行可能ファイルを構築するには、次のコマンドを使用します

native-image [options] -jar jarfile [executable name]

デモを実行

前提条件

GraalVM JDK をインストールしたことを確認してください。始める最も簡単な方法は SDKMAN! です。その他のインストールオプションについては、ダウンロード セクション を参照してください。

  1. アプリケーションを準備します。

    • 「App」という名前の新しい Java プロジェクトを、お気に入りの IDE または端末で、次の構造で作成します
        | src
        |   --com/
        |      -- example
        |          -- App.java
      
    • 次の Java コードを src/com/example/App.java ファイルに追加します
        package com.example;
      
        public class App {
      
            public static void main(String[] args) {
                String str = "Native Image is awesome";
                String reversed = reverseString(str);
                System.out.println("The reversed string is: " + reversed);
            }
      
            public static String reverseString(String str) {
                if (str.isEmpty())
                    return str;
                return reverseString(str.substring(1)) + str.charAt(0);
            }
        }
      

      これは、再帰を使用して文字列を反転させる小さな Java アプリケーションです。

  2. アプリケーションをコンパイルします。
     javac -d build src/com/example/App.java
    

    build/com/example/ ディレクトリにファイル App.class が生成されます。

  3. 実行可能な JAR ファイルを作成します。
     jar --create --file App.jar --main-class com.example.App -C build .
    

    プロジェクトのルートディレクトリに、App.jar という名前の実行可能な JAR ファイルが生成されます。その内容を表示するには、コマンド jar tf App.jar を実行します。

  4. ネイティブ実行可能ファイルを作成します。
     native-image -jar App.jar
    

    プロジェクトのルート ディレクトリにネイティブ実行可能ファイルが生成されます。実行可能ファイルのデフォルト名は JAR ファイルの名前(この場合は「App」)になります。最後の引数としてカスタム名を提供すること(たとえば、native-image -jar App.jar executable_name)、または -jar jarfile の前または後に -o executable_name を使用してカスタマイズできます。たとえば、native-image -jar App.jar -o executable_name です。

  5. ネイティブ実行可能ファイルを実行します。
     ./App
    

native-image のデフォルトの動作は java コマンドに準拠しています。つまり、通常 java で行うように -jar-cp-m オプションを渡してネイティブイメージを使用して構築できます。たとえば、java -jar App.jar someArgumentnative-image -jar App.jar となり、./App someArgument となります。

お問い合わせ