【问题标题】:How to access Linux Global variables using Java program如何使用 Java 程序访问 Linux 全局变量
【发布时间】:2014-12-16 07:57:12
【问题描述】:

谢谢大家的帮助,

我有导出值的 shell 脚本程序。这是我的shell脚本程序

#! /bin/sh
export TEST=35
echo "echo $TEST"

我已经使用命令 ./test.sh 以及 source ./test.sh 执行了 shell 脚本 (test.sh - shell 脚本程序名) 我已尝试在命令提示符下打印该值,以确保 TEST 变量要导出,并将 TEST 值打印为 35。测试变量按预期导出。

现在我有一块 java 可以访问这个 TEST - linux 全局变量。示例代码如下,

import java.util.Map;

public class hello
{
    public static void main(String[] args)
        {

            System.out.println(System.getProperty("TEST"));
            System.out.println("Hello World");
        }
    }
}

现在的问题是,当我执行 java 程序时,我将 TEST 值设为空。 现在我的问题是我是否正在使用一种写入方式来从 java 访问 GLobal 变量。如果不是,我如何从 java 程序访问 Linux 全局变量。

【问题讨论】:

  • 这些被称为环境变量,而不是“全局变量”。 Java 的系统属性是一个额外的概念,这就是您的查找不返回预期值的原因。

标签: java linux


【解决方案1】:

使用System.getenv api,如下所示

 String test = System.getenv().get("TEST")

getenv 将返回一个映射,您可以从中获取变量。另一方面,getProperty 方法用于获取系统属性,即在启动您提供的 jvm 时使用 -DMyVar=Value。

确保您在父 shell 中定义变量而不是子 shell,否则从脚本本身启动 jvm 以使用 getenv 访问变量,就像您从父 shell 启动 jvm 一样,然后您在子 shell 中导出的变量对父级不可用外壳。

【讨论】:

  • 谢谢,我收到以下错误消息,java.lang.System 中的 getenv(java.lang.String) 无法应用于 ()
  • 不客气。不要忘记通过接受答案来结束此问题,以便将来对其他人有所帮助。
【解决方案2】:

在小型项目中使用就足够了

System.getenv().get("variable_name");

如果您的项目使用/将使用 maven,那么您应该在 pom.xml 中编写

${env.variable_name}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多