我写了一个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
。
我应该提一下,每当我不使用配置文件,我的程序工作正常。
这是我第一次遇到这个问题而无法以任何方式修复它。我会感激任何建议。
答案 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 !!!