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()
чем вам нужно настроить его перед загрузкой файла конфигурации.