Apache Commons 配置无法保存

Apache Commons Configuration Cant save

我正在使用 Apache Commons Configuration 将一些属性保存在位于包 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 配置 V.1.10

Maven 依赖

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

您无法保存指向 JAR 中文件的配置。尝试使用位于 JAR 外部的配置文件,您会看到自动保存选项正常工作。

编辑

您可以将文件放在 JAR 中,也可以放在默认位置之一的相同相对路径中。 the documentation 是这么说的。

If you do not specify an absolute path, the file will be searched automatically in the following locations:

  • in the current directory
  • in the user home directory
  • in the classpath

因此,例如,如果您的 JAR 中有一个默认属性文件,位于 conf/configuration.properties,您可以将这些属性放在用户主目录中的同一相对路径下 - 例如在 Linux /home/username/conf/configuration.properties 上或与您的 JAR 文件位于同一目录中。两者都应该足够安全。