Конфигурация Apache Commons Не удается сохранить

Я использую конфигурацию Apache Commons, чтобы сохранить некоторые свойства в файле свойств, расположенном в пакете re/iprocu/coperativeerp/config/payment/configurations.properties

private PropertiesConfiguration configs = new  PropertiesConfiguration("re/iprocu/coperativeerp/config/payment/configurations.properties");
configs.setAutoSave(true);
configs.setProperty(date.getYear()+"-"+date.getMonthValue()+"-01", offsetMember);

Проблема в том, что когда я запускаю приведенный выше код, я получаю следующую ошибку

Exception in thread "JavaFX Application Thread" org.apache.commons.configuration.ConfigurationRuntimeException: Failed to auto-save
at org.apache.commons.configuration.AbstractFileConfiguration.possiblySave(AbstractFileConfiguration.java:753)
at org.apache.commons.configuration.AbstractFileConfiguration.clearProperty(AbstractFileConfiguration.java:799)
at org.apache.commons.configuration.AbstractConfiguration.setProperty(AbstractConfiguration.java:485)
at org.apache.commons.configuration.AbstractFileConfiguration.setProperty(AbstractFileConfiguration.java:788)

Обновить

Конфигурация Apache Commons, версия 1.10

Зависимость от Maven

<dependency>
     <groupId>commons-configuration</groupId>
     <artifactId>commons-configuration</artifactId>
     <version>1.10</version>
</dependency>

person Yunus Einsteinium    schedule 04.08.2016    source источник
comment
Можете ли вы сказать, какую версию jar-файла Commons-configuration вы используете?   -  person Preetam Kumar    schedule 04.08.2016


Ответы (1)


Вы не можете сохранить конфигурацию, которая указывает на файл в JAR. Попробуйте использовать файл конфигурации, расположенный за пределами вашего JAR, и вы увидите, что опция автосохранения работает правильно.

ИЗМЕНИТЬ

Вы можете поместить файл как в JAR, так и по тому же относительному пути в одном из мест по умолчанию. Вот что говорится в документации.

Если вы не укажете абсолютный путь, файл будет автоматически найден в следующих местах:

  • в текущем каталоге
  • в домашнем каталоге пользователя
  • в пути к классам

Итак, если, например, у вас есть файл свойств по умолчанию в вашем JAR, расположенный в conf/configuration.properties, вы можете поместить свойства либо в домашний каталог пользователя по тому же относительному пути - например, в Linux /home/username/conf/configuration.properties или в том же каталоге, что и ваш файл JAR. Оба должны быть достаточно безопасными.

person Miloš Milivojević    schedule 14.08.2016
comment
Тогда возникает большой вопрос, где хранить файл свойств (местоположение должно быть относительным путем и быть уверенным, что с ним не будет проблем с безопасностью)? - person Yunus Einsteinium; 14.08.2016