1

我在尝试将变量替换与 typesafehub ConfigFactory fileParser 一起使用时遇到问题

我的代码是

Configuration(ConfigFactory.parseFile(new File("/Users/TDong/files/app.conf")).resolve())

我的 app.conf 文件包含

path = ${java.home}

在每次解析时,我都无法通过变量替换来解析该变量以找到 java 系统属性主页。任何想法如何使这项工作

4

2 回答 2

2

要利用覆盖功能,您需要坚持或通过该方法ConfigFactory.load()处理合并配置。Config#withFallback事实上,这就是 ConfigFactory#load()工作原理。

https://github.com/typesafehub/config#standard-behavior

便捷方法 ConfigFactory.load() 加载以下内容(首先列出的优先级较高):

  • 系统属性 application.conf(类路径上具有此名称的所有资源)
  • application.json (类路径上具有此名称的所有资源)
  • application.properties(类路径上具有此名称的所有资源)
  • reference.conf(类路径上具有此名称的所有资源)

恕我直言,您应该依赖默认行为并使用-Dconfig.file=/path/to/your.conf将文件作为参数传递给您的应用程序。

我强烈建议阅读写得很好的文档。

于 2017-06-30T10:39:40.473 回答
0

path = ${java.home}您指java.home的是同一配置文件中的其他值。为了覆盖值,您应该运行您的应用程序

java -jar -Djava.home=VALUE your_jar.jar

或使用一些允许您传递参数的工具。

如果要设置此值,System.setProperty()则需要在加载配置文件之前进行设置。

于 2017-06-22T11:49:58.130 回答