2014-02-23 1 views
0

에서 정보를 읽을 수 없습니다. 나는 자바 프로그램을 작성했고 그 파일에서 모든 정적 정보를 읽는 설정 파일을 사용합니다. 설정 파일을 여러 번 사용했지만 이번에는 프로그램에서 정보를 읽을 수 없습니다.은 설정 파일

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

하고 내가 가진 오류입니다 : 나는 Config를 호출 할 경우

다음
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)) ; 
    } 
} 

가 장소 :

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 클래스의 :

여기 내 Config 클래스의 :

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

Confige 파일 : 내 IDE 및 jdk1.7Netbeans 7.3 사용하고

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

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

. config 파일을 사용하지 않을 때마다 프로그램이 정상적으로 작동한다는 것을 언급해야합니다. 이 문제가 발생한 것은 처음이며 어떤 방식 으로든 해결할 수 없습니다. 나는 어떤 조언을 주셔서 감사하겠습니다.

+1

구성 파일을 공유하십시오 – Paolof76

+1

프로젝트를 지우고 다시 컴파일하십시오. 런타임'NoSuchFieldError'는 smelly입니다. –

+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

안녕하세요. 실제로 getString 메서드가 내 코드에 있는데 여기에이 코드를 추가하는 것을 잊어 버렸습니다. –

0

문제 혼자서 생긴 실수로 생긴 프로그램에서 나는 프로그램을 실행할 때마다 설정 파일을 가지고있는 또 다른 프로그램을 호출했는데, 잘못된 설정 파일을 읽었습니다.

그래서 구성 파일의 이름과 주소가 변경되어 문제가 해결되었습니다! 나는 그것이 내 문제 또는 netbeans 버그인지 몰라요!