我们可以在Java中读取OS环境变量吗?

Wil*_*iam 45 java environment-variables

我的操作系统是windows7.我想在我的Java应用程序中读取环境变量.我搜索谷歌和很多人的答案是使用方法 System.getProperty(String name)System.getenv(String name).但它似乎没有用.通过该方法,我可以读取JVM中定义的一些变量值.

如果我设置一个名为"Config"的环境变量,其值为"some config infomations",我如何在Java中获取该值?

谢谢你的帮助!

Dro*_*sky 72

您应该使用System.getenv(),例如:

import java.util.Map;

public class EnvMap {
    public static void main (String[] args) {
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从IDE运行时,您可以定义将传递给Java应用程序的其他环境变量.例如,在IntelliJ IDEA中,您可以在运行配置的"环境变量"字段中添加环境变量.

注意(如@vikingsteve的评论中所述),JVM与任何其他Windows可执行文件一样,对环境变量的系统级更改仅在重新启动时传播到进程.

有关更多信息,请查看Java教程的" 环境变量 "部分.

System.getProperty(String name)用于获取非环境变量的Java 系统属性.

  • @drorb我无法获得"环境变量"的问题是因为我没有重新启动我的IDE.T ^ T (5认同)

end*_*and 57

如果有人来到这里并想知道如何获得一个特定的环境变量而不循环遍历您可以使用的所有系统变量getenv(String name).它返回"变量的字符串值,如果未在系统环境中定义变量,则返回null".

String myEnv = System.getenv("env_name");
Run Code Online (Sandbox Code Playgroud)

  • 是的,它适用于所有env vars的操作系统 (6认同)