実行時のネイティブ実行可能ファイルの環境変数へのアクセス

ネイティブ実行可能ファイルは、通常のJavaアプリケーションと同じ方法で環境変数にアクセスします。

デモの実行

たとえば、環境変数を繰り返し処理し、コマンドライン引数として渡される文字列を含むものを出力するJavaアプリケーションを実行します。

前提条件

GraalVM JDKがインストール済であることを確認します。最も簡単に始めるには、SDKMAN!を使用します。その他のインストール・オプションについては、「ダウンロード」セクションを参照してください。

  1. 次のソース・コードをEnvMap.javaという名前のファイルに保存します:
     import java.util.Map;
    
     public class EnvMap {
         public static void main (String[] args) {
             var filter = args.length > 0 ? args[0] : "";
             Map<String, String> env = System.getenv();
             for (String envName : env.keySet()) {
                 if(envName.contains(filter)) {
                     System.out.format("%s=%s%n",
                                     envName,
                                     env.get(envName));
                 }
             }
         }
     }
    
  2. 次のように、ファイルをコンパイルし、ネイティブ実行可能ファイルをビルドします:
     javac EnvMap.java
    
     native-image EnvMap
    
  3. ネイティブ・アプリケーションを実行し、"HELLO"などのコマンドライン引数を渡します。一致する名前の環境変数がないため、出力はありません。
     ./envmap HELLO
     <no output>
    
  4. "HELLOWORLD"という名前の新しい環境変数を作成し、値"Hello World!"を指定します。(bashシェルを使用している場合は、次の例に従います。)ここで、ネイティブ実行可能ファイルを再度実行します。一致する環境変数の名前と値が正しく出力されます。
     export HELLOWORLD='Hello World!'
    
     ./envmap HELLO
    

    予想される出力が表示されるはずです:

     HELLOWORLD=Hello World!