2013-03-29 2 views
0

jar에 속성 파일이 첨부 된 상태에서 Java 프로그램을 사용하려고했습니다. 따라서, 나는 프로그램을 jar하고 속성 파일을 첨부하기 위해 unjar을 수행했다. 속성 파일이 필요한 MyClass 클래스가 있습니다. 따라서 기본적으로 MyClass.class와 동일한 폴더에 속성 파일을 저장합니다. 그 다음 나는 그것을 뒤로 받쳤다. 내 MyClass.java에서 jar 파일에 특성 파일로드

, 난하여 속성에 액세스하려고했다 :

Properties prop = new Properties(); 
prop.load(MyClass.class.getClassLoader().getResourceAsStream("prop.properties")); 

prop.properties 내 MyClass.class와 같은 폴더에 있습니다.

로드하지 못했습니다. 어떤 도움을 주시면 감사하겠습니다!

감사합니다, 클래스 패스의 루트에 상대적으로

+0

당신은'prop.load (this.getClass(). getResourceAsStream ("/ prop.properties"));'시도 했습니까? – SRy

+1

대신 MyClass.class.getResourceAsStream을 사용해보십시오. – NilsH

+0

또한 prop.load (MyClass.class.getResourceAsStream ("/ prop.properties"));를 시도했습니다. 하지만 그것은 작동하지 않았다. – c0mrade

답변

4

ClassLoader.getResourceAsStream() 취급 경로, 즉이 클래스 로더의 각 JAR 또는 디렉토리의 루트 레벨에 자원을 찾습니다.

경로를 해당 클래스의 패키지와 관련이있는 것으로 간주하는 Class.getResourceAsStream을 원할 수도 있습니다. 스트림을 읽은 후에 스트림을 닫아야합니다. MyClass 패키지 com.example에있는 경우

Properties prop = new Properties(); 
InputStream in = MyClass.class.getResourceAsStream("prop.properties"); 
try { 
    prop.load(in); 
} finally { 
    in.close(); 
} 

다음이는 JAR에서 com/example/prop.properties을로드합니다.

+0

대단히 감사합니다. 이안! 이제는 효과가 있습니다. – c0mrade

관련 문제