속성 파일을 읽으려는 다음 코드가 있습니다.
Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream stream = loader.getResourceAsStream("myProp.properties");
prop.load(stream);
마지막 줄에서 예외가 발생합니다. 구체적으로 특별히:
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:46)
at Assignment1.BaseStation.main(BaseStation.java:87)
고마워, 니 코스
답변
예외에 InputStream
따라이 null이며 이는 클래스 로더가 속성 파일을 찾지 못한다는 것을 의미합니다. myProp.properties가 프로젝트의 루트에 있다고 생각합니다.이 경우 선행 슬래시가 필요합니다.
InputStream stream = loader.getResourceAsStream("/myProp.properties");
답변
이 페이지에서 정보를 찾을 수 있습니다 :
http://www.mkyong.com/java/java-properties-file-examples/
Properties prop = new Properties();
try {
//load a properties file from class path, inside static method
prop.load(App.class.getClassLoader().getResourceAsStream("config.properties"));
//get the property value and print it out
System.out.println(prop.getProperty("database"));
System.out.println(prop.getProperty("dbuser"));
System.out.println(prop.getProperty("dbpassword"));
}
catch (IOException ex) {
ex.printStackTrace();
}
답변
ResourceBundle
클래스를 사용 하여 속성 파일을 읽을 수 있습니다 .
ResourceBundle rb = ResourceBundle.getBundle("myProp.properties");
답변
Properties prop = new Properties();
try {
prop.load(new FileInputStream("conf/filename.properties"));
} catch (IOException e) {
e.printStackTrace();
}
conf/filename.properties
프로젝트 루트 디렉토리에 기반
답변
이 키워드는 다음과 같이 사용할 수 없습니다.
props.load(this.getClass().getResourceAsStream("myProps.properties"));
정적 컨텍스트에서.
가장 좋은 방법은 다음과 같은 애플리케이션 컨텍스트를 확보하는 것입니다.
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/META-INF/spring/app-context.xml");
그런 다음 클래스 경로에서 리소스 파일을로드 할 수 있습니다.
//load a properties file from class path, inside static method
prop.load(context.getClassLoader().getResourceAsStream("config.properties"));
이것은 정적 및 비 정적 컨텍스트 모두에서 작동하며 가장 중요한 부분은이 속성 파일이 응용 프로그램의 클래스 경로에 포함 된 모든 패키지 / 폴더에있을 수 있다는 것입니다.
답변
파일은 com/example/foo/myProps.properties
클래스 경로에서 와 같이 사용할 수 있어야합니다 . 그런 다음 다음과 같이로드하십시오.
props.load(this.getClass().getResourceAsStream("myProps.properties"));
답변
config.properties가 src / main / resource 디렉토리에 있지 않고 프로젝트의 루트 디렉토리에있는 경우 아래와 같은 작업을 수행해야합니다.
Properties prop = new Properties();
File configFile = new File(myProp.properties);
InputStream stream = new FileInputStream(configFile);
prop.load(stream);