2015-01-15 24 views
14

Im cố gắng để thực hiện một công cụ cấu hình typesafehub/config im sử dụng mã nàyKhông cấu hình thiết lập được tìm thấy cho cấu hình typesafe chính

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

Và vị trí của tập tin bất động sản là /src/main/resources/application.conf

Nhưng đối với một số lý do tôi nhận

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

nội dung tệp

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" 
} 

Mọi thứ đều được định cấu hình chính xác? tôi có bỏ sót gì không

cảm ơn,

miki

+4

Nội dung của application.conf là gì? –

+0

@Paul tôi đã thêm nội dung tệp – MIkCode

+0

@MIkCode cách bạn giải quyết vấn đề này? – Rajarshi

Trả lời

14

Các thông báo lỗi được nói với bạn rằng bất cứ điều gì cấu hình đã đọc, nó không bao gồm một thiết lập cấp cao nhất được đặt tên add. Hàm ConfigFactory.load sẽ cố tải cấu hình từ nhiều nơi khác nhau. Theo mặc định, nó sẽ tìm kiếm một tệp có tên là application với hậu tố là .conf hoặc .json. Có vẻ như tệp đó là một tài nguyên Java trên đường dẫn lớp của bạn. Tuy nhiên, các thuộc tính hệ thống khác nhau sẽ ghi đè hành vi mặc định này.

Vì vậy, có khả năng là những gì bạn bỏ lỡ là một trong những:

  • Có thể rằng src/main/resources không phải là trên con đường lớp học của bạn?
  • Là những config.file, config.resource hoặc config.url thuộc tính thiết lập?
  • Tệp application.conf của bạn có trống không?
  • Bạn có application.conf mà bạn có thể tìm thấy trước đó trong đường dẫn lớp học của mình không?
  • Khóa: add được xác định trong application.conf?
+0

Để hoàn thành, tôi sẽ thêm rằng lỗi này cũng có thể xảy ra khi sau khi bạn chuyển nhượng, bạn thêm nhận xét giống như java. Tức là, bằng cách sử dụng // thay vì #. –

+0

Trong trường hợp của tôi, khóa đã bị bỏ qua trong tệp tin application.conf – 030

3

Bạn đang sử dụng một IDE hoặc SBT? Tôi gặp vấn đề tương tự khi sử dụng Eclipse. Nó chỉ đơn giản là không tìm thấy file application.conf lúc đầu và sau đó không thể nhận thấy các chỉnh sửa. Tuy nhiên, khi tôi chạy chương trình của mình qua sbt, tất cả đều hoạt động tốt, kể cả Eclipse. Vì vậy, tôi đã thêm 'chính/tài nguyên' vào thư viện (Project -> Properties -> Java Build Path -> Libraries "," add class folder ") .Điều đó cũng có thể giúp bạn.

0

Đặt application.conf của bạn trong thư mục src và nó sẽ hoạt động

0

Tôi đã gặp phải vấn đề này bên trong bài kiểm tra Specs2 do SBT điều khiển, hóa ra vấn đề là do https://github.com/etorreborre/specs2/issues/556 gây ra. Trong trường hợp đó, contextClassLoader của Thread không sử dụng Nếu bạn chạy vào một lỗi tương tự, có các phiên bản khác của ConfigFactory.load() cho phép bạn vượt qua ClassLoader của lớp hiện tại thay thế. Nếu bạn đang sử dụng Specs2 và bạn đang gặp phải sự cố này, hãy sử dụng phiên bản < = 3.8.6 hoặc> = 4.0.1.

Các vấn đề liên quan