返回

在运行时访问原生可执行文件中的环境变量

原生可执行文件访问环境变量的方式与普通 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!
    

联系我们