2017-06-21 38 views
1

我有問題,嘗試使用變量替換與typesafehub ConfigFactory fileParserConfigFactory ParseFile解決與變量替換Java系統屬性

我的代碼

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

和我app.conf文件包含

path = ${java.home} 

對每個解決方案我無法解決該變量與變量替換找到Java系統屬性家。任何想法如何使這項工作

回答

0

path = ${java.home}你指的是java.home在同一個配置文件中的其他值。爲了覆蓋值應與

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

或使用一些工具,讓您來傳遞參數運行應用程序。

如果你想設置這個值System.setProperty()比你需要在加載配置文件之前設置它。

0

要獲得優先功能,您需要遵循ConfigFactory.load()或通過Config#withFallback方法處理merging configuration。事實上,這是如何工作的 。

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

便利方法ConfigFactory.load()加載以下 (第一個列出的是更高的優先級):

  • 系統屬性application.conf(所有的資源上與類路徑 這個名字)
  • application.json(這個名字的所有資源都在這個類路徑上)
  • 個application.properties(類路徑上的所有資源與這一 名)
  • reference.conf(類路徑上的所有資源使用該名稱)

恕我直言,你應該依靠默認行爲,使用-Dconfig.file=/path/to/your.conf傳遞文件作爲您的應用程序的參數。

我強烈建議閱讀寫得很好的文檔。