2010-04-06 2 views
0

아마, 내 다른 조금이다, 거기에 비슷한 질문을 많이가 있지만 :자바 웹 애플리케이션 :에있는 .JAR에서로드 자원 WEB-INF

의 내부에서 리소스를로드 할 수있는 권리 방법입니다 무슨 일이 .jar 파일이 WEB-INF/lib 폴더에 있습니다 (웹 응용 프로그램이 실행되는 동안 jar 파일 이름과 리소스가 속한 클래스 이름을 알고있는 경우)? 이 목적으로 getServletContext().getResourceAsStream(?)을 사용해야하나요 아니면 <name-of-known-class>.getResourseAsStream(?)을 사용해야하나요? 거기에 어떤 경로를 지정해야합니까?

그래서, 구조는 다음과 같습니다 당신은 "로컬"클래스 로더를 사용하여 리소스를로드 <name-of-known-class>.getResourseAsStream(?)를 사용한다

/WEB-INF 
    /classes 
     /some/package/name 
      ?.class #some Java code or Servlet that tries to read 'required-file.xml' 
    /lib 
     /<jar-with-known-name>.jar 
      /another/package/with/known/name 
       SomeKnownClass.class 
       required-file.xml 
+0

http://stackoverflow.com/questions/2552793/reading-xml-file-inside-a-jar-package http://stackoverflow.com/questions/2504272/shipping-java-code- 항아리에 데이터 굽기 http://stackoverflow.com/questions/861500/url-to-load-resources-from-the-classpath-in-java http://stackoverflow.com/ 질문/1108434/howto-load-a-web-from-web-inf-of-a-web-archive 디렉토리 비슷한 질문들 나의 차이점 : 보통 'getServletContext.getResourceAsStream ('/ WEB- INF/classes/blah/blah/resource.xml ')'를 호출하여'.jar's가 아닌 리소스를로드합니다. 잘못된 것이 아니라면 어떤 경로가 jarred입니까? –

답변

3

. webapp의 경우, webapp의 클래스 로더를 사용합니다.

getServletContext().getResourceAsStream(?) 메서드는 webapp 루트를 기준으로 webapp 리소스를 반환하므로 JAR 파일을 볼 수 없습니다.

이 방법의 javadoc은 지정해야하는 경로를 설명하지만 본질적으로 알려진 클래스와 관련된 경로를 사용할 수 있습니다.

SomeKnownClass.class.getResourceAsStream("required-file.xml"); 
+1

고마워요! 이제 나는 올바른 방법을 알고 있습니다 :). –