Groovy/Java在Windows机器上获取用户变量

Groovy/Java在Windows机器上获取用户变量,java,windows,groovy,environment-variables,Java,Windows,Groovy,Environment Variables,我们有: System.getenv() 用于获取系统变量(红色箭头),但我不知道如何获取用户变量(蓝色箭头) 从JVM的角度来看,在系统或用户级别设置环境变量并不重要。 它们无论如何都会被Windows合并(显然,特定用户会话的特定用户变量) 获取此类变量值的代码是System.getenv(“variablename”),在Groovy或Java中看起来完全相同 什么可能导致变量为空?设置此变量后,需要重新启动应用程序。它可以是IDE、www服务器或任何东西。JVM需要有机会在初始化时获取

我们有:

System.getenv()
用于获取系统变量(红色箭头),但我不知道如何获取用户变量(蓝色箭头)


从JVM的角度来看,在系统或用户级别设置环境变量并不重要。 它们无论如何都会被Windows合并(显然,特定用户会话的特定用户变量)

获取此类变量值的代码是
System.getenv(“variablename”)
,在Groovy或Java中看起来完全相同

什么可能导致变量为空?设置此变量后,需要重新启动应用程序。它可以是IDE、www服务器或任何东西。JVM需要有机会在初始化时获取新变量(或旧变量的新值)

检查变量是否已设置的简单测试是运行windows控制台(cmd)并键入
set
。这将打印所有可用的环境变量,包括用户变量

还有一件值得一提的事情是您在示例中指向的
PATH
变量。Windows对待这一个与其他任何一个都不同。通常,每当您使用与现有系统变量相同的名称设置用户变量时,这意味着系统值将被此用户会话的用户值覆盖。 但是,使用
PATH
变量,Windows会将系统值附加到用户值


无论如何,如果在用户级别设置了名称相同但值不同的变量,则无法访问给定变量名的系统变量值。它已经被覆盖或追加。

从JVM的角度来看,无论您是在系统级还是在用户级设置环境变量都无关紧要。 它们无论如何都会被Windows合并(显然,特定用户会话的特定用户变量)

获取此类变量值的代码是
System.getenv(“variablename”)
,在Groovy或Java中看起来完全相同

什么可能导致变量为空?设置此变量后,需要重新启动应用程序。它可以是IDE、www服务器或任何东西。JVM需要有机会在初始化时获取新变量(或旧变量的新值)

检查变量是否已设置的简单测试是运行windows控制台(cmd)并键入
set
。这将打印所有可用的环境变量,包括用户变量

还有一件值得一提的事情是您在示例中指向的
PATH
变量。Windows对待这一个与其他任何一个都不同。通常,每当您使用与现有系统变量相同的名称设置用户变量时,这意味着系统值将被此用户会话的用户值覆盖。 但是,使用
PATH
变量,Windows会将系统值附加到用户值


无论如何,如果在用户级别设置了名称相同但值不同的变量,则无法访问给定变量名的系统变量值。它已经被覆盖或追加。

它们不是都是环境变量集吗?它们不是都是环境变量集吗?是的,您是正确的,都是在查询
system.getenv(“路径”)时检索到的用户特定路径值和系统范围的路径值SoapUI GUI。是的,您是正确的,在查询
System.getenv(“Path”)时检索了用户特定路径值和系统范围的路径值SoapUI GUI。