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

ネイティブ実行可能ファイルは、通常の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));
            }
        }
    }
}

このコードは、環境変数を繰り返し処理し、コマンドライン引数として渡される文字列を含むものを出力します。

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

  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!