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

Erk*_* M. 0 java windows groovy environment-variables

我们有:

System.getenv()
Run Code Online (Sandbox Code Playgroud)

获取系统变量(红色箭头),但我无法弄清楚如何获取用户变量(蓝色箭头)?

在此输入图像描述

top*_*opr 6

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

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

什么可能导致您的变量为null?设置此类变量后,您需要重新启动应用程序.它可能是IDE,www服务器或其他什么.在初始化时,JVM需要有机会获取新变量(或旧变量的新值).

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

还有一件值得一提的是PATH你在你的例子中指出的变量.Windows对待这个与其他任何一个不同.通常,只要您设置与现有系统变量同名的用户变量,就意味着系统值将被此用户会话的用户值覆盖.PATH但是,对于变量,Windows会将系统值附加到用户值.

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