2011-09-29 7 views
1

특성 파일을로드하려고합니다. 적절한 파일은 응용 프로그램의 클래스 경로에 있습니다.Java에서 특성 파일을로드 할 수 없습니다.

Properties p = new Properties(); 
p.load(new FileInputStream("classpath:mail.properties")); 
System.out.println(p.get("hi")); 

는 지금은 x.properties라는 다른 파일 내가 x.properties 같은 폴더에 내 mail.properties을 배치이

<property name="x"> 
    <util:properties location="classpath:x.properties" /> 
</property> 

같은 XML 파일에 언급되어 있기 때문에, 클래스 경로를 말하지만, 내 Java 프로그램에서 찾을 수 없습니까? 내가 누락 된 어떤 아이디어?

답변

6

그냥 때문에 일부 프로그램 XML 파일은 자바에서 보편적으로 승인 된 구문 것을 의미하지 않는다 구문 classpath:x.properties을 좋아 처리!

당신이 FileInputStream"classpath:x.properties"를 제공하는 경우가 classpath:x.properties라는 이름의 파일을 찾습니다. 해당 생성자의 설명서를 확인하십시오.

해당 파일의 전체 경로를 제공하십시오. 파일이 클래스 경로에있을 발생하면 mail.properties이 클래스 경로에 실제로있는 경우, 당신은

p.load(getClass().getResourceAsStream("mail.properties")); 
+1

클래스의 getClass()입니다. 예를 들어 TestProgram에서 main 메소드를 실행하고 있다면 TestProgram.class.getClass()가되어야합니까? – user2434

+0

그러면'TestProgram.class.getResourceAsStream'을 사용할 수 있습니다. – aioobe

+0

음 ... InputStream이 null이됩니다. – user2434

1

같은 것을 사용할 수 있습니다, 당신은 더 좋은 행운이있을 것이다 클래스 로더를 통해로드 :

Properties p = new Properties(); 
InputStream is = getClass().getClassLoader().getResourceAsStream("mail.properties"); 
p.load(is); 
+0

Hah. 거기에 몇 가지 경쟁이 있었던 것 같습니다. 게시물을 클릭하기 바로 전에 나타났습니다. ;) – Thor84no

+0

@ Thor84no - lol, 귀하의 답변은 * I * 게시 된 게시물을 클릭하기 바로 전에 클릭했습니다. 시간/공간 연속체 문제? :디 – mcfinnigan

관련 문제