返回

在原生可執行檔中於執行時期存取環境變數

原生可執行檔存取環境變數的方式與一般 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 shell,請參閱以下範例。)現在,再次執行原生可執行檔 — 它將正確印出符合的環境變數的名稱和值。
     export HELLOWORLD='Hello World!'
    
     ./envmap HELLO
    

    您應該會收到預期的輸出

     HELLOWORLD=Hello World!
    

與我們聯繫