Java 执行set命令时不显示环境变量

Java 执行set命令时不显示环境变量,java,windows,environment-variables,Java,Windows,Environment Variables,我们的一个应用程序依赖于服务器安装设置的环境变量的存在。安装服务器后,我可以使用“环境变量”对话框确认此变量的存在。但是,当客户端应用程序执行时,对set命令和Java的System.getenv()方法的调用会忽略此变量,所有其他变量都存在。有趣的是,读取特定环境变量的失败仅发生在Windows7 64位机器上,而在WindowsXP32位机器上则不会发生。32位机器上的相同代码返回服务器安装设置的环境变量。我不确定windows7和windowsxp之间的差异是否在这里起作用。有人对如何处理

我们的一个应用程序依赖于服务器安装设置的环境变量的存在。安装服务器后,我可以使用“环境变量”对话框确认此变量的存在。但是,当客户端应用程序执行时,对set命令和Java的
System.getenv()
方法的调用会忽略此变量,所有其他变量都存在。有趣的是,读取特定环境变量的失败仅发生在
Windows7 64位机器上,而在
WindowsXP32位机器上则不会发生。32位机器上的相同代码返回服务器安装设置的环境变量。我不确定
windows7
windowsxp
之间的差异是否在这里起作用。有人对如何处理这个问题有什么建议吗

有几件事需要检查

1) 键入
echo%VARNAME%
时会发生什么情况可能与Java在幕后所做的事情相差不远

2) 这是全系统的环境变量还是每个用户的环境变量?这不应该有什么区别,但可能会有

3) 你能发布你的代码吗。下面的剪贴画对我很好,对你有用吗


stringpath=System.getenv(“路径”)

事实证明,我不知道,Windows7有两个cmd.exe命令——一个用于32位环境,一个用于64位环境。在为32位环境运行cmd.exe时,我没有看到我的变量,但在为64位环境运行cmd.exe时,变量就在那里。

getEnv
在所有平台上返回区分大小写的
map
。顺便问一下,System.getProperties()的结果是什么?是否包含您正在搜索的环境变量?@Ravinder它不包含。我想是因为我的不是系统属性?1)没有输出被打印,当我执行set命令时,我的变量(系统变量)没有被打印。2) 这是一个系统变量3)这是我正在使用的代码,两者产生相同的结果:p=r.exec(“cmd.exe/c set”)//$NON-NLS-1$Map getenv=System.getenv();