我们可以用Java读取操作系统环境变量吗?

我们可以用Java读取操作系统环境变量吗?,java,environment-variables,Java,Environment Variables,我的操作系统是windows7。我想读取Java应用程序中的环境变量。我搜索过谷歌,很多人的答案是使用方法System.getProperty(字符串名)或System.getenv(字符串名)。但它似乎不起作用。通过该方法,我可以读取JVM中定义的某个变量的值 如果我设置了一个名为“Config”的环境变量,其值为“some Config information”,那么如何在Java中获取该值?您应该使用,例如: import java.util.Map; public class EnvM

我的操作系统是windows7。我想读取Java应用程序中的环境变量。我搜索过谷歌,很多人的答案是使用方法
System.getProperty(字符串名)
System.getenv(字符串名)
。但它似乎不起作用。通过该方法,我可以读取JVM中定义的某个变量的值

如果我设置了一个名为“Config”的环境变量,其值为“some Config information”,那么如何在Java中获取该值?

您应该使用,例如:

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));
        }
    }
}
import java.util.Map;
公共类环境映射{
公共静态void main(字符串[]args){
Map env=System.getenv();
for(字符串envName:env.keySet()){
System.out.format(“%s=%s%n”,
我的名字,
env.get(envName));
}
}
}
当从IDE运行时,您可以定义将传递给Java应用程序的其他环境变量。例如,在IntelliJ IDEA中,您可以在的“环境变量”字段中添加环境变量。

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

有关更多信息,请参阅Java教程的“”部分。


System.getProperty(字符串名称)
用于获取非环境变量的Java。

如果有人来到这里,想知道如何获取特定的环境变量,而不必循环使用您可以使用的所有系统变量。它返回“变量的字符串值,如果系统环境中未定义变量,则返回null”


System.getenv()
是要使用的正确调用。的可能重复项还请注意,如果在windows中修改env变量,可能需要重新启动控制台(或编辑器,如IDEA?)才能正确启动更改。每个进程都有自己的环境变量。如果您在一个进程中设置它,它将不会神奇地出现或改变另一个进程。似乎您应该使用其他属性文件作为设置。与其投票以重复方式关闭此设置,不如以重复方式关闭链接问题,因为这有更好的答案。@drorb我无法获取“环境变量”的问题实际上是因为我没有重新启动IDE.t^TSame。必须重新启动IDE。您能演示如何按名称读取单个环境变量吗?我假设它类似于:
System.getenv().get(“foo”)?@AlexanderMills检查第二个答案:String myEnv=System.getenv(“env_name”);系统属性与环境变量不同。谢谢@drorbereznitsky独立吗?
String myEnv = System.getenv("env_name");