尝试在配置文件中使用${HOSTNAME}
不起作用!根据文档,配置文件应解析文档中提到的环境变量:
如果它们在配置本身中没有解析,替换会回退到环境变量,因此$ {HOME}将按预期工作。此外,大多数配置都合并了系统属性,因此您可以使用$ {user.home}。
有没有办法让主机名进入配置文件?
生殖
将host.name=${HOSTNAME}
添加到application.conf
文件,然后尝试从任何位置访问它。例如,尝试添加
Logger.info(s"Hostname is ${current.configuration.getString("host.name").getOrElse("NOT-FOUND")}")
到Global.scala
。
环境
这是在echo $HOSTNAME
生成precise32
的RHEL6环境中运行的,因此环境变量存在,这不是程序hostname
。
答案 0 :(得分:7)
这可能不起作用,因为$HOSTNAME
实际上似乎不是一个环境变量:
jamesw@T430s:~$ echo $HOSTNAME
T430s
jamesw@T430s:~$ export|grep HOSTNAME
jamesw@T430s:~$
所以它必须是一些其他特殊的bash事物。
答案 1 :(得分:7)
解决方案似乎是通过系统属性-Dhost.name=$HOSTNAME
或-Dhost.name=$(hostname)
传递主机名。我想在Windows中它会是其他东西,但这适用于* NIX环境。
除非有人能提出更清洁的东西,否则这将是公认的答案。
答案 2 :(得分:1)
您应该看到调用System.getenv("HOSTNAME")
是否返回非空值。如果没有,则HOSTNAME
不是根据java运行时的env变量,这对于将其映射到typesafe配置中的配置属性非常重要。我用HOSTNAME
尝试了这个,尽管我可以在bash中回应它,但它在java中不能用作env替换。我将其更改为USER
,一切都按预期工作。