Вы на самом деле не сказали, чего хотите достичь. Будет ли ваше приложение определять некоторые пути и передавать их стороннему приложению через API? Будет ли что-то в вашей среде (например, аргумент командной строки) указывать расположение файлов?
Сначала я бы реорганизовал их код, чтобы точно знать, что любые жестко закодированные строки хранятся в одном определенном месте. Так что если, например, у них есть
readProperties("/usr/thing/propertyFileXxx.txt");
или
static final String PROPERTY_XXX = "/usr/thing/propertyFileXxx.txt";
readProperties(PROPERTY_XXX);
Я бы сначала объединил в один метод доступа для свойств
readProperties(PROPERTY_XXX_ENUM);
Так что теперь у нас есть четко определенный фрагмент кода, который определяет, где получить свойства каждого типа, и конкретный список типов свойств.
Тогда нам нужен какой-то управляемый способ определить набор файлов свойств, которые будут использоваться во время выполнения. Я использовал предложенную @tangens идею о загрузке свойств в виде ресурсов из определенного каталога, добавленного в путь к классам.