9

尝试${HOSTNAME}在配置文件中使用不起作用!根据文档,配置文件应该解析文档中提到的环境变量:

如果替换不能在配置本身中解析,则替换回退到环境变量,因此 ${HOME} 将按您的预期工作。此外,大多数配置都合并了系统属性,因此您可以使用 ${user.home}。

有没有办法将主机名放入配置文件?

复制
添加host.name=${HOSTNAME}application.conf文件,然后尝试从任何地方访问它。例如尝试添加

Logger.info(s"Hostname is ${current.configuration.getString("host.name").getOrElse("NOT-FOUND")}")

Global.scala.

环境
这是在 RHEL6 环境中运行的,echo $HOSTNAME因此precise32环境变量存在,这不是程序hostname

4

3 回答 3

8

该解决方案似乎是通过系统属性作为-Dhost.name=$HOSTNAME或传递主机名-Dhost.name=$(hostname)。我想在 Windows 中它会是别的东西,但这适用于 *NIX 环境。

除非有人能想出更干净的东西,否则这将是公认的答案。

于 2013-09-13T15:05:50.840 回答
7

这可能不起作用,因为$HOSTNAME它实际上似乎不是一个环境变量:

jamesw@T430s:~$ echo $HOSTNAME
T430s
jamesw@T430s:~$ export|grep HOSTNAME
jamesw@T430s:~$

所以它一定是其他一些特殊的 bash 东西。

于 2013-09-12T21:30:29.573 回答
1

您应该查看调用是否System.getenv("HOSTNAME")返回非空值。如果不是,则HOSTNAME根据 java 运行时不是 env 变量,这对于将其映射到类型安全配置中的配置属性很重要。我尝试了这个,HOSTNAME即使我可以在 bash 中回显它,它在 java 中也不能作为 env 替换。我将其更改为USER,一切都按预期工作。

于 2013-09-12T21:24:10.237 回答