Не найден параметр конфигурации для 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
Ответы
Ответ 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.