файл свойств не работает внутри jar - PullRequest
1 голос
/ 06 октября 2010

У меня проблемы с файлом свойств, когда я пытаюсь сделать автономное приложение Java работоспособным.У меня есть 2 файла свойств, в зависимости от того, на каком компьютере его инициализируется.Внутри затмения все работало нормально.Я использовал:

Properties configProps = new Properties();
....
if(machine1)
....
configProps.load(Config.class.getResourceAsStream("machine1.properties"));
else
configProps.load(Config.class.getResourceAsStream("machine2.properties"));

Он работал, так как Config.java и свойства были в одном пакете.Кроме того, у меня есть свойства log4j, расположенные в корне проекта.Это также не работает, когда я сделал Jar.

Как справиться с текущей ситуацией. Я знаю, что размещение файла свойств вне jar - хорошая идея.Как мне это сделать.

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 06 октября 2010

Размещение файла свойств вне jar-файла - это только хорошая идея, если вам нужно записать в этот файл свойств (это для конфигурации). Учитывая ваше имя, я предполагаю, что это для конфигурации.

Только для чтения, ваш метод в порядке, если файл свойств правильно упакован в Jar. Это? Вы достигли максимума в содержании, используя jar tf MyJar.jar? Показывает ли он файл свойств по правильному пути?

Где хранить файлы конфигурации - более широкая проблема. Вот хорошая SO-статья, в которой рассматриваются несколько ее аспектов (а именно: , где , чтобы поместить ее): Как правильно хранить данные conf приложения в Java?

Мне кажется, вы хотите выбрать место (см. Статью выше). Как только вы это сделаете, при первом запуске приложения вы должны загрузить свойства JAR-файла по умолчанию, как вы пытаетесь это сделать, а затем сразу же сохранить их в выбранном вами месте. Затем, а потом читайте и пишите в это место. Вам нужно будет использовать FileInputStream / FileOutputStream.

0 голосов
/ 06 октября 2010

Попробуйте добавить манифест в META-INF вашего JAR с соответствующим образом установленным Class-Path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...