Подтвердить что ты не робот

Не найден параметр конфигурации для config typesafe

Я пытаюсь реализовать инструмент настройки typesafehub/config im используя этот код

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

И расположение файла свойств /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"
}

Все выглядит правильно настроенным? я что-то пропустил.

спасибо,

miki

4b9b3361

Ответ 1

В сообщении об ошибке сообщается, что всякая конфигурация была прочитана, она не включала настройку верхнего уровня с именем add. Функция ConfigFactory.load будет пытаться загрузить конфигурацию из разных мест. По умолчанию он будет искать файл с именем application с суффиксом .conf или .json. Он ищет этот файл как ресурс Java на пути к вашему классу. Однако различные свойства системы будут отменять это поведение по умолчанию.

Итак, вполне вероятно, что вы пропустили одно из следующих:

  • Возможно ли, что src/main/resources не находится на вашем пути к классу?
  • Установлены ли свойства config.file, config.resource или config.url?
  • Ваш файл application.conf пуст?
  • У вас есть application.conf, который был бы найден ранее в вашем пути к классу?
  • Является ли ключ: add определен в application.conf?

Ответ 2

Используете ли вы IDE или sbt? У меня была аналогичная проблема при использовании Eclipse. Он просто не нашел файл application.conf вначале, а позже не заметил изменений. Однако, как только я запускал свою программу через sbt, все работало отлично, включая Eclipse. Итак, я добавил "main/resources" в библиотеки (Project → Properties → Java Build Path → Libraries "," add class folder "). Это также может помочь вам.

Ответ 3

Поместите ваш application.conf в папку src и он должен работать

Ответ 4

Я столкнулся с этой проблемой внутри теста Specs2, который был запущен SBT. Оказалось, что проблема была вызвана https://github.com/etorreborre/specs2/issues/556. В этом случае Thread contextClassLoader не использовал правильный загрузчик классов. Если вы столкнулись с подобной ошибкой, есть и другие версии ConfigFactory.load(), которые позволяют вам вместо этого передать класс ClassLoader. Если вы используете Specs2, и вы видите эту проблему, используйте версию <= 3.8.6 или >= 4.0.1.