【问题标题】:java.lang.IllegalArgumentException: 'hello' does not contain an equals signjava.lang.IllegalArgumentException:“你好”不包含等号
【发布时间】:2015-03-02 04:15:43
【问题描述】:

我目前正在使用 Apache commons 配置库来写入和读取文件中的数据。我可以将键值对 colors=hello 保存到 user..properties 文件中,但是当我尝试读取该值时会出现以下异常。

Exception in thread "main" java.lang.IllegalArgumentException: 'hello' does not contain an equals sign
at org.apache.commons.configuration.AbstractConfiguration.getProperties(AbstractConfiguration.java:625)
at org.apache.commons.configuration.AbstractConfiguration.getProperties(AbstractConfiguration.java:579)
at com.code.prep.CommonsMain.readProperties(CommonsMain.java:21)
at com.code.prep.CommonsMain.main(CommonsMain.java:12)

代码如下

package com.code.prep;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

public class CommonsMain {

    public static void main(String[] args) {

        CommonsMain main = new CommonsMain();
        main.readProperties();
//      main.writeProperties();
    }

    public void readProperties(){

        PropertiesConfiguration config = new PropertiesConfiguration();
        try {
            config.load("user.properties");
            System.out.println(config.getProperties("colors"));
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }

    public void writeProperties(){
        PropertiesConfiguration config = new PropertiesConfiguration();
        try {
            config.load("user.properties");
            config.setProperty("colors", "hello");
            config.save("user.properties");
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}

类路径中的 Jars 是:

commons-configuration-1.9.jar commons-lang-2.4.jar commons-logging-1.1.1.jar

user.properties 包含

颜色 = 你好 用户 = thejavamonk

【问题讨论】:

  • 您的user.properties 文件是什么样的?

标签: java apache-commons properties-file


【解决方案1】:

你不应该使用

config.getProperties("colors")

但是

config.getProperty("colors")

“getProperties(code)”在您的 user.properties 文件中查找(多)行,格式为:

code key=val

所以它期望你的代码有如下行:

colors foreground=black
colors background=white

等等

【讨论】:

    【解决方案2】:

    这看起来不像是库问题。打开您的文件并检查数据是否实际可用。从你的代码看起来你正在做 -

    main.readProperties();
    //      main.writeProperties();
    

    除非你写,否则为什么会有任何数据?先调用writeProperties()方法再读回来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2015-01-01
      • 1970-01-01
      • 2013-07-06
      相关资源
      最近更新 更多