2009-08-27 2 views
2

클래스를 사용하여 소스 폴더 아래에 속성 파일을 가져 왔습니다. 그러나 그것은 효과가 없습니다! 확인한 결과, 기본 경로가 다음을 사용하여 발견되었습니다.GlassFish를 사용하는 WebApplication의 파일 경로

File f = new File("/src/ss.properties"); 

웹 응용 프로그램 경로가 아니라 글래스 피시 구성 경로입니다. "classes"경로에 저장된 속성 파일을 가져 오려면 어떻게해야합니까? 보통 기본 경로는 프로젝트 경로입니다.

나는 ClassLoader.getResourceAsStream("sss")을 사용했습니다. 그러나 null을 반환합니다! 다른 간단한 Java 응용 프로그램에서 시도했기 때문에 파일 이름이 정확하다고 확신합니다.

업데이트 :

this.getClass().getClassLoader().getResourceAsStream("sectionMapping.properties"); 

대신

ClassLoader.getSystemResource("sectionMapping.properties") 

을 사용하여 트릭을했다! 왜 그런지 궁금해?

+0

답변을 업데이트했습니다. –

답변

5

getResourceAsStream 또는 이와 비슷한 값을 사용해야합니다. 리소스에 액세스하는 방법은 this post을 참조하십시오. Glassfish와 독립적입니다. 모든 Java EE 응용 프로그램 서버에 적용됩니다.

도 참조하십시오. this JavaWorld article.

업데이트 : 파일이 src/ss.properties 인 경우 WEB-INF/classes으로 복사되었는지 확인하십시오. 그런 다음, 다음과 같은 코드로 액세스 할 수 있어야합니다 :

InputStream propStream = ClassLoader.getResourceAsStream("ss.properties"); 

또는

InputStream propStream = Class.getResourceAsStream("/ss.properties"); 

주 (java.lang.Class의 방법을 사용하는 경우 참고 슬래시를 선도하는) 그 .properties을 포함한 전체 파일 이름 (확장)을 사용해야합니다.

이 둘 모두가 작동하지 않으면 getResource(...).openStream()으로 getResourceAsStream 전화를 대체하고 예외의 세부 사항을 게시하십시오.