2014-02-23 75 views
0

我編寫了一個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 

Confige文件:

# 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。 我應該提到,只要我不使用配置文件,我的程序工作正常。 這是我第一次遇到這個問題,我無法修復它。我會很感激任何建議。

+1

請分享配置文件 – Paolof76

+1

清理項目並重新編譯它。運行時NoSuchFieldError異常 – 2014-02-23 08:59:22

+0

首先設置MINUTE值以查看發生了什麼。 – bvj

回答

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 
+0

hi.actually方法getString存在於我的代碼中,我忘記在這裏添加它 –

0

問題由我自己造成的錯誤造成的。在程序中,我調用另一個程序,它也具有配置文件,所以無論何時運行該程序,它都會從錯誤的配置文件中讀取。

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