Виртуальная песочница (тм)

Friday, May 15, 2009

How to read properties located outside/inside the jar?

Обычная ситуация: приложение упаковано в архив, а файл с настройками находится вне архива. Как читать файл настроек?

Первый, не очень элегантный вариант, заключается в том, чтобы передавать приложению местоположение конфигурационного файла как параметр -- либо как параметр командной строки, либо как system property:
-Dsome.name=/path/to/the.properties


Более элегантное решение - разместить конфигурационный файл в одном из каталогов, прописанных в CLASSPATH, и использовать
ClassLoader.getSystemResource("filename")

Такое решение следует паттерну "Convention over Configuration" и не замусоривает интерфейс запуска приложения. При помощи того же метода ClassLoader'а можно читать и properties-файлы, расположенные внутри jar-файла.

See also "property file location" discussion thread on TheServerSide.

No comments: