无法从配置文件中读取信息

时间:2014-02-23 08:45:36

标签: java netbeans-7 java-7 configuration-files

我写了一个java程序,我使用一个配置文件来读取它的所有静态信息。 我多次使用配置文件,但这次,程序无法从中读取信息。

这是我的Config课程:

public class Config {
    private static final PropertiesReader PROPS_READER = new PropertiesReader("/config.properties");
    public static final int HOUR = PROPS_READER.getInt("hour");
    public static final int MINUTE = PROPS_READER.getInt("minute");
    public static final int SECOND = PROPS_READER.getInt("second");
    public static final Long DELAY = PROPS_READER.getLong("delay");}

这是我的PropertiesReader课程:

import java.io.IOException;
import java.util.Properties;

public class PropertiesReader {
    private final Properties PROPS = new Properties();
    public PropertiesReader(String path){
        try {
            PROPS.load(PropertiesReader.class.getResourceAsStream(path));
        } catch (IOException ex) {
            ex.printStackTrace(System.err);
        }
    }
    public String getString(String key) {
        return PROPS.getProperty(key);
    }
    public int getInt(String key) {
        return Integer.valueOf(getString(key));
    }
    public long getLong(String key) {
        return Long.valueOf(getString(key)) ;
    }
}

这是我调用Config的地方:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, Config.HOUR);
cal.set(Calendar.MINUTE, Config.MINUTE);
cal.set(Calendar.SECOND, Config.SECOND);

这是我得到的错误:

Exception in thread "main" java.lang.NoSuchFieldError: HOUR

配置文件:

# To change this template, choose Tools | Templates
# and open the template in the editor.

hour=11
minute=3
second=0
delay=1200

我正在使用Netbeans 7.3作为我的IDE和jdk1.7。 我应该提一下,每当我不使用配置文件,我的程序工作正常。 这是我第一次遇到这个问题而无法以任何方式修复它。我会感激任何建议。

2 个答案:

答案 0 :(得分:0)

嘿,你的代码甚至没有编译......在PropertiesReader类中定义了getString()在哪里?

我已经简化了一点,但这应该可行(将您的属性文件放在项目的根目录中):

package my.stuff;

import java.io.IOException;
import java.util.Calendar;
import java.util.Properties;

public class TestClass {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, Config.HOUR);
        cal.set(Calendar.MINUTE, Config.MINUTE);
        cal.set(Calendar.SECOND, Config.SECOND);

        System.out.println(cal.toString());

    }
}

class PropertiesReader {
    private final Properties PROPS = new Properties();
    public PropertiesReader(String path){
        try {
            PROPS.load(PropertiesReader.class.getResourceAsStream(path));
        } catch (IOException ex) {
            ex.printStackTrace(System.err);
        }
    }
    public int getInt(String key) {
        return Integer.valueOf((String)PROPS.get(key));
    }

}


class Config {
    private static final PropertiesReader PROPS_READER = new PropertiesReader("/config.properties");
    public static final int HOUR = PROPS_READER.getInt("hours");
    public static final int MINUTE = PROPS_READER.getInt("minutes");
    public static final int SECOND = PROPS_READER.getInt("seconds");
}

这里有config.properties内容:

hours=10
minutes=22
seconds=30
delay=10

答案 1 :(得分:0)

由我自己造成的错误引起的问题。在程序中我调用了另一个程序,它也有配置文件,因此每当我运行程序时,它都会从错误的配置文件中读取。

所以我更改了配置文件的名称和地址,问题解决了!我不知道这是我的问题还是netbeans bug !!!