【问题标题】:Can we read the OS environment variables in Java?我们可以在 Java 中读取操作系统环境变量吗?
【发布时间】:2014-01-03 19:03:36
【问题描述】:

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

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

【问题讨论】:

  • System.getenv() 是正确的调用方式。
  • 另外请注意,如果您在 Windows 中修改环境变量,您可能需要重新启动控制台(或编辑器,如 IDEA?)才能正确启动更改。
  • 每个进程都有自己的环境变量。如果你在一个进程中设置它,它不会神奇地出现或改变另一个进程。看来您应该为您的设置使用属性文件之类的其他东西。
  • 不要投票关闭这个重复的问题,而是去关闭链接的问题作为这个重复,因为这有更好的答案。

标签: java environment-variables


【解决方案1】:

你应该使用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

【讨论】:

  • @drorb 我无法获取“环境变量”的问题实际上是因为我没有重新启动我的 IDE.T^T
  • 对我来说也一样。必须重新启动 IDE。
  • 你能展示如何按名称读取单个环境变量吗?我认为它类似于:System.getenv().get("foo");?
  • @AlexanderMills 查看第二个答案:String myEnv = System.getenv("env_name");
  • 系统属性与环境变量不同。谢谢@DrorBereznitsky
【解决方案2】:

如果有人来到这里想知道如何在不遍历所有系统变量的情况下获取特定环境变量,您可以使用getenv(String name)。它返回“变量的字符串值,如果变量没有在系统环境中定义,则返回null”。

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

【讨论】:

  • 独立于操作系统吗?
猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多