ConfigFactory ParseFile разрешается с помощью подстановки переменных с помощью системного свойства Java

У меня возникли проблемы при попытке использовать подстановку переменных с помощью typesafehub ConfigFactory fileParser

мой код

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

и мой файл app.conf содержит

path = ${java.home}

при каждом разрешении я не могу разрешить эту переменную с помощью подстановки переменных, чтобы найти системное свойство java home. Любые идеи, как сделать эту работу

2 ответа

Чтобы воспользоваться преимуществами основных функций, вам необходимо придерживаться ConfigFactory.load() или займитесь объединением конфигурации через Config#withFallback метод. На самом деле это как ConfigFactory#load() работает.

https://github.com/typesafehub/config

Вспомогательный метод ConfigFactory.load() загружает следующее (первые в списке имеют более высокий приоритет):

  • системные свойства application.conf (все ресурсы в classpath с этим именем)
  • application.json (все ресурсы в classpath с этим именем)
  • application.properties (все ресурсы в classpath с этим именем)
  • reference.conf (все ресурсы в classpath с этим именем)

ИМХО, вы должны полагаться на поведение по умолчанию и использовать -Dconfig.file=/path/to/your.conf передать файлы в качестве аргументов в ваше приложение.

Я настоятельно рекомендую просмотреть документацию, которая очень хорошо написана.

В path = ${java.home} Вы ссылаетесь на другое значение в java.home в том же файле конфигурации. Чтобы переопределить значение, вы должны запустить приложение с

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

или с помощью какого-либо инструмента, который позволяет передавать аргументы.

Если вы хотите установить это значение с помощью System.setProperty() чем вам нужно настроить его перед загрузкой файла конфигурации.

Другие вопросы по тегам