我正在使用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>
答案 0 :(得分:1)
您无法保存指向JAR中文件的配置。尝试使用位于JAR之外的配置文件,您将看到自动保存选项正常工作。
修改强>
您可以将文件放在JAR中,也可以放在其中一个默认位置的相同路径中。这是the documentation所说的内容。
如果未指定绝对路径,将在以下位置自动搜索文件:
- 在当前目录中
- 在用户主目录中
- 在类路径中
因此,如果您在JAR中有一个默认属性文件,位于conf/configuration.properties
,则可以将属性放在用户的主目录下相同的相对路径下 - 例如在Linux /home/username/conf/configuration.properties
上或与JAR文件在同一目录中。两者都应该足够安全。