Apache Commons配置无法保存

时间:2016-08-04 13:47:38

标签: java apache-commons-config

我正在使用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 Configuration V. 1.10

Maven依赖

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

1 个答案:

答案 0 :(得分:1)

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

修改

您可以将文件放在JAR中,也可以放在其中一个默认位置的相同路径中。这是the documentation所说的内容。

  

如果未指定绝对路径,将在以下位置自动搜索文件:

     
      
  • 在当前目录中
  •   
  • 在用户主目录中
  •   
  • 在类路径中
  •   

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