2012-03-27 3 views
0

모든 질문을 대답과 함께 읽었지만 나에게 도움이되지 않습니다.웹 응용 프로그램의 항아리에서 리소스로드

내 웹 응용 프로그램에는 몇 개의 이미지와 xml을 포함하는 항아리가 있습니다. 이러한 jar 자체의 클래스에서 필요합니다. 그래서 다음과 같이 필요한 라인을 수정 :

Thread.currentThread().getContextClassLoader().getResource(path) // returns null 

나는 또한 시도되기 전에 :

내가 사용하여 (병 자체 내부에 존재) 자원을 참조하는 내 항아리 내부의 클래스를 변경

MyClassName.class.getResource(path) // null again 

나는 이것에 대해 많이 읽고 코드의 최신 라인은 자원을 선택 할 수 있다는 것을 알고있어,하지만 불행히도 그 어느 것도 내가 뭔가를 놓친 거지 ... 나를 위해 작동?

참고 : Tomcat7에 내가 비스타에서 실행하고 있기 때문에 실행, 나는 같은 '경로'값을 얻을 '\ MyFolder에 \ 이미지 \'

감사

+1

정확한 경로 사용중인 값과 무슨 일이 무엇인가에 단지 내 XMLS을 처리하는 데 도움이 희망 리소스 파일 또는 파일의 위치? – davidfrancis

+0

jar 파일의 다른 config.xml에서 경로가 선택됩니다 (완벽하게 읽음). xml에 지정된 경로는 '/ alpha/images'입니다. 즉 MyJar.jar | | ___ 알파 | | ____images Windows로 인해 \ alpha \ images로 바뀝니다 (유일한 이유일까요?) – Akshat

+0

getResource 메소드로 전달하는 정확한 경로 값을 제공 할 수 있습니까? 클래스 로더 또는 클래스 메소드를 사용하여 리소스를 찾을 지 여부에 따라 달라야합니다. "클래스"버전의 경로는 "images/myImage.gif"와 같아야합니다. 여기서는 이미지가 현재 클래스의 패키지 폴더의 이미지 하위 폴더에 있고 이미지 파일의 이름이 myImage.gif라고 가정합니다. – davidfrancis

답변

1

하나는주의를 취해야합니다 몇 가지 포인트가 있습니다 웹 응용 프로그램에 포함 된 jar 내에서 리소스로드

  1. 파일로드는 리소스로드와 다릅니다. File.seperator을 사용할 때 파일과 절대 경로는 일반적으로 w.r.t입니다. 자원로드에는 권장하지 않습니다.
  2. 항아리 내에서 리소스를로드하는 경우 을 사용하지 말고 일반 '/'을 해당 항아리 인 상대 경로로 사용하십시오.
  3. jar 파일 내의 xml에서 속성을 읽는 중 ... 해당 속성이 다른 위치를 참조하는 경우 '/'로 읽어야합니다. 이 '/'로 대체하기 때문에 다시, File.seperator로드 자원에 대해 작동하지 않습니다 '\'(Windows 시스템) 마지막으로
  4. , 다음 줄

    MyCurrentClass.class를, 당신의 항아리 코드에서 리소스를로드 사용할 때. 의 getResource (경로)

는 사람들이 웹 응용 프로그램