2015-01-15 102 views
14

我試着使用這段代碼沒有配置設置發現鑰匙類型安全配置

val conf = ConfigFactory.load() 
val url = conf.getString("add.prefix") + id + "/?" + conf.getString("add.token") 

以及屬性文件的位置來實現配置工具typesafehub/config IM是/src/main/resources/application.conf

但由於某些原因,我收到

com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'add' 

文件內容

add { 
    token = "access_token=6235uhC9kG05ulDtG8DJDA" 
    prefix = "https://graph.facebook.com/v2.2/" 
    limit = "&limit=250" 
    comments="?pretty=0&limit=250&access_token=69kG05ulDtG8DJDA&filter=stream" 
    feed="/feed?limit=200&access_token=623501EuhC9kG05ulDtG8DJDA&pretty=0" 
} 

一切看起來配置正確?我錯過了什麼。

感謝,

三木

+4

application.conf的內容是什麼? –

+0

@Paul我添加了文件內容 – MIkCode

+0

@MIkCode你是如何解決這個問題的? – Rajarshi

回答

14

錯誤消息告訴你,無論配置得到了閱讀,它沒有包括一個名爲add頂部級別設置。 ConfigFactory.load函數將嘗試從各種地方加載配置。默認情況下,它將查找名稱爲application的文件,後綴爲.conf.json。它會將該文件作爲類路徑上的Java資源來查找。但是,各種系統屬性將覆蓋此默認行爲。

所以,很可能你錯過了什麼是其中之一:

  • 難道src/main/resources是不是你的類路徑上?
  • config.file,config.resourceconfig.url屬性是否設置?
  • 您的application.conf文件是空的嗎?
  • 您是否有application.conf可以在您的課程路徑的早期找到?
  • 是關鍵:add定義在application.conf
+0

爲了完整性,我會補充說,這個錯誤也可能發生在你分配你添加類似java的註釋之後。也就是說,使用//而不是#。 –

+0

在我的情況下,在application.conf文件中省略了該鍵 – 030

3

您是使用IDE還是sbt? 我在使用Eclipse時遇到了類似的問題。它起初並沒有找到application.conf文件,後來也沒有注意到編輯。 但是,一旦我通過sbt運行我的程序,所有工作都很好,包括Eclipse。所以,我在庫中添加了「主要/資源」(項目 - >屬性 - > Java構建路徑 - >庫,「添加類文件夾」),這也可以幫助你。

0

將你的application.conf在src文件夾中,它應該可以工作

0

我在由SBT驅動的Specs2測試中遇到了這個問題,結果發現問題是由https://github.com/etorreborre/specs2/issues/556引起的,在這種情況下,Thread的contextClassLoader沒有使用正確的類加載器如果遇到類似的錯誤,還有其他版本的ConfigFactory.load()允許您傳遞當前類的ClassLoader。如果您使用Specs2並且您看到此問題,請使用版本< = 3.8.6或> = 4.0.1。