如何使用Java程序访问Linux全局变量

如何使用Java程序访问Linux全局变量,java,linux,Java,Linux,谢谢大家的帮助 我有一个shell脚本程序,可以导出值。这是我的shell脚本程序 #! /bin/sh export TEST=35 echo "echo $TEST" 我已经使用命令./test.sh和source./test.sh执行了shell脚本 (test.sh-shell脚本程序名) 我已经尝试在命令提示符中打印该值,以确保要导出的测试变量为ed,并且它将测试值打印为35。测试变量按预期导出 现在我有了一段java,它可以访问这个TEST-linux全局变量。示例代码如下所示 i

谢谢大家的帮助

我有一个shell脚本程序,可以导出值。这是我的shell脚本程序

#! /bin/sh
export TEST=35
echo "echo $TEST"
我已经使用命令./test.sh和source./test.sh执行了shell脚本 (test.sh-shell脚本程序名) 我已经尝试在命令提示符中打印该值,以确保要导出的测试变量为ed,并且它将测试值打印为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程序时,我得到的测试值为null。
现在我的问题是,我是否在用写方法从java访问全局变量。如果没有,我如何从java程序访问Linux全局变量。

使用下面的
System.getenv
api

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


确保在父shell中定义变量而不是作为子shell,否则从脚本本身启动jvm以使用getenv访问变量,就像从父shell启动jvm一样,那么在子shell中导出的变量将不可用于父shell。

在小型项目中,就可以使用它了

System.getenv().get("variable_name");
如果您的项目使用/将使用maven,那么您应该在pom.xml中编写

${env.variable_name}

这些被称为环境变量,而不是“全局变量”。Java的系统属性是另一个概念,这就是为什么您的查找没有返回预期值的原因。谢谢,我收到下面的错误消息,Java.lang.system中的getenv(Java.lang.String)无法应用于()欢迎您。别忘了接受答案来结束这个问题,这样将来它可以帮助别人。