【问题标题】:Why System.getProperty doesn't return value from System variables in windows为什么 System.getProperty 不从 Windows 中的系统变量返回值
【发布时间】:2014-03-21 01:27:20
【问题描述】:

我有这个系统变量

这段代码:

System.out.println(System.getProperty("area"));

返回空值。

我可以通过 System.getProperty 方法从 java 代码中获取系统变量的访问权限吗?

附言

【问题讨论】:

    标签: java windows properties system


    【解决方案1】:

    这不是一个系统变量,而是一个环境变量。您可以使用System.getenv() 访问这些变量。 System.getProperty() 用于返回启动程序时设置的任何变量。示例:

    # java -Dmyproperty=myvalue MyProgram
    

    【讨论】:

    • System.out.println(System.getenv("area"));返回空
    • 请注意,在 java 8 中,您应该写 java -Dmyproperty=myvalue -jar myProgram.jar 而不是 java -jar myProgram.jar -Dmyproperty=myvalue,否则 myproperty 将是 null
    【解决方案2】:

    要列出所有Java System Properties 使用,然后检查是否有area 属性:

    Properties props = System.getProperties();
    props.list(System.out);
    

    看到这个example

    【讨论】:

      【解决方案3】:

      System#getProperty 获取系统属性。

      可以通过System#getenv访问环境变量Map

      System.out.println(System.getenv("area"));
      

      应该会给你你的结果。

      编辑:

      尝试运行以下代码并检查您需要的变量是否出现在控制台中,或者其他已定义变量的行为是否不一致:

      public static void main(String[] args) {
              Set<String> envSet = System.getenv().keySet();
              for (String env : envSet) {
                  System.out.println("Env Variable : " + env + " has value : "
                          + System.getenv(env));
              }
      
          }
      

      【讨论】:

      • System.out.println(System.getenv("area")); 返回 null
      • @gstackoverflow:打开一个new命令提示符并输入set area,然后告诉我们输出结果。
      • 在 cmd 中输出:* area=1 *
      • 结果已添加到主题
      • PopoFibo,你怎么看?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2011-06-24
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多