DOS Shell设置含%的环境变量后Java System.getenv丢失%的原因及解决咨询
问题原因
%是Windows命令提示符(cmd.exe,即你所说的DOS Shell)的内置特殊字符,作用是标记环境变量的引用边界。当你执行set MY_VAR=MY%VALUE命令时,cmd会自动将%VALUE识别为对名为VALUE的环境变量的引用,由于你当前运行环境中没有定义VALUE变量,cmd会直接将%VALUE替换为空值,最终MY_VAR的实际赋值结果为MYVALUE,因此Java读取到的环境变量自然不存在%字符。
解决方案
要在cmd中设置包含字面量%的环境变量,只需要用连续两个%进行转义,单个%%最终会被cmd解析为单个字面量%,修改后的启动命令如下:
set MY_VAR=MY%%VALUE my_jar.jar MyClass
该配置下Java代码无需做任何调整,通过System.getenv("MY_VAR")即可正常读取到完整的MY%VALUE取值。
内容的提问来源于stack exchange,提问作者Ann-Christin Lindras
相关产品推荐
相关产品推荐

