Я работаю над проектом Java, который хочу доставить моему клиенту в виде файла .jar. Однако я хочу позволить клиенту иметь возможность изменять параметры программы без необходимости перекомпиляции или повторного создания .jar. По сути, я хочу иметь возможность загружать файлы .properties из классов внутри .jar, но размещать эти файлы .properties вне .jar и даже вне рабочего каталога.
Я тестировал свои попытки в Eclipse, что может быть причиной некоторых проблем, но я не вижу, как это происходит в данный момент. Моя установка следующая. У меня есть один проект, который содержит несколько классов, из которых я строю файл .jar. У меня есть файл .properties, который используется для создания ResourceBundle всякий раз, когда создается класс для .jar. Я указываю, что дополнительный каталог, "conf /", должен быть включен в путь к классу .jar в манифесте .jar.
Как только файл .jar собран, он копируется в каталог lib / другого проекта, который я использую для тестирования. Этот тестовый проект включает файл .jar в виде библиотеки («Добавить внешние файлы Jar.») В путь сборки Java. Файл .properties находится в каталоге conf /, который находится на том же уровне, что и lib /, src / и bin /, но я не могу получить его там. Единственный способ заставить его работать - это найти conf / в src / (и bin /), но я бы хотел использовать его на один уровень выше. Возможно ли это?
Вот запись в файле манифеста .jar ...
Class-Path: ../conf/
Вот вызов ResourceBundle, который я пытался (не работал) ...
rb = ResourceBundle.getBundle("..conf.BaseProject");
Вот структура каталогов, которая работает сейчас (имена были изменены, чтобы защитить невинных) ...
/Project
/Project/bin
/Project/bin/conf
/Project/bin/conf/BaseProject.properties
/Project/bin/TestClass.class
/Project/lib
/Project/lib/BaseProject.jar
Вот макет каталога, который я хочу (опять же, имена файлов не важны) ...
/Project
/Project/bin
/Project/bin/TestClass.class
/Project/conf
/Project/conf/BaseProject.properties
/Project/lib
/Project/lib/BaseProject.jar