【问题标题】:Apache Commons Configuration Cant saveApache Commons 配置无法保存
【发布时间】:2016-08-04 13:47:38
【问题描述】:

我正在使用 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>

【问题讨论】:

  • 你能告诉你正在使用的Commons-configuration jar的版本吗?

标签: java apache-commons-config


【解决方案1】:

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

编辑

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

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

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

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

【讨论】:

  • 那么最大的问题是属性文件保存在哪里(位置应该是相对路径,并确保不会有安全问题)?
猜你喜欢
  • 2013-02-26
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 2012-01-28
相关资源
最近更新 更多