java.lang.IllegalArgumentException:'你好'不包含等号

时间:2015-03-02 04:15:43

标签: java apache-commons properties-file

我目前正在使用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是:

公地配置-1.9.jar 公地郎2.4.jar 共享记录-1.1.1.jar

user.properties包含

colors =你好 user = thejavamonk

2 个答案:

答案 0 :(得分:6)

您不应该使用

config.getProperties("colors")

config.getProperty("colors")

“getProperties(code)”正在查找表格的user.properties文件中的(多个)行:

code key=val

所以它期待您的代码具有如下行:

colors foreground=black
colors background=white

答案 1 :(得分:0)

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

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

为什么除非你写这个数据,否则会有任何数据?首先调用writeProperties()方法,然后再将其读回。