2013-12-16 66 views
29

我的操作系统是windows7。我想在我的Java应用程序中读取环境变量。我搜索谷歌和许多人的答案是使用方法System.getProperty(String name)System.getenv(String name)。但它似乎并不奏效。通过这个方法,我可以读取JVM中定义的一些变量的值。我们可以在Java中读取OS环境变量吗?

如果我设置了一个名为“Config”的环境变量,其值为“某些配置信息”,我该如何获取Java中的值?

感谢您的帮助!

+2

'System.getenv()'是正确的调用使用。 –

+4

http://stackoverflow.com/questions/461018/how-can-my-java-code-read-os-environment-variables –

+4

可能的重复也请注意,如果你修改一个env变量在windows中,你可能会需要重新启动您的控制台(或您的编辑器,如IDEA),以便更改正确启动。 – vikingsteve

回答

49

您应该使用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)); 
     } 
    } 
} 

从IDE运行时,您可以定义将被传递到您的Java应用程序的其他环境变量。例如在IntelliJ IDEA中,您可以在run configuration的“环境变量”字段中添加环境变量。

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

欲了解更多信息,请看看Java教程的“Environment Variables”部分。

System.getProperty(String name)旨在获取不是环境变量的Java system properties

+2

@drorb为什么我不能得到“环境变量”的问题真的是因为我没有重新启动我的IDE.T^T – William

+0

我也一样。必须重新启动IDE。 – gosua

34

如果有人来到这里,想知道如何获得一个特定的环境变量,而不需要循环所有的系统变量,你可以使用getenv(String name)。它返回“变量的字符串值,或者如果变量未在系统环境中定义,则返回null”。

String myEnv = System.getenv("env_name"); 
+0

它是否独立于操作系统? – TheByeByeMan

+4

是的,它可以在任何环境中运行 –

相关问题