Первый, не очень элегантный вариант, заключается в том, чтобы передавать приложению местоположение конфигурационного файла как параметр -- либо как параметр командной строки, либо как 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.