簡體   English   中英

無法從配置文件中讀取信息

[英]can not read information from config file

我編寫了一個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 我應該提到,只要不使用配置文件,我的程序就可以正常工作。 這是我第一次遇到這個問題,我無法解決。 我將不勝感激任何建議。

嘿,您的代碼甚至無法編譯... 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

由我自己引起的錯誤引起的問題。 在該程序中,我調用了另一個具有配置文件的程序,因此,每當我運行該程序時,它都會從錯誤的配置文件中讀取。

所以我更改了配置文件的名稱和地址,問題解決了! 我不知道這是我的問題還是netbeans錯誤!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM