2008-10-09 4 views
17

내 클래스가 압축 된 .war 파일에서로드되거나 다른 곳에서로드 된 것으로 가정합니다. 주어진 패키지의 모든 리소스를 검색하려면 어떻게해야합니까? 이 파일은 전쟁 파일이기 때문에 열거하는 파일은 실제로 작동하지 않습니다. 현재 클래스 로더를 사용하는 것이 가장 일반적일까요?주어진 패키지의 리소스를 나열 할 수 있습니까?

저기있는 라이브러리가 있습니까? 인터넷 검색은 목록 파일을 이용한 해킹 만 나타 냈습니다.

답변

5

아니요, JVM이 어떤 패키지에 어떤 리소스가 있는지 모르기 때문에 패키지의 리소스를 나열 할 수 없습니다. this question을 참조하십시오.

6

스프링 프레임 워크는 PathMatchingResourcePatternResolver 클래스를 제공합니다. 이 클래스를 사용하면 와일드 카드로 Ant 스타일 경로를 제공 할 수 있으며 관련 리소스를 찾을 수 있습니다 (클래스 패스의 폴더와 jar를 통해 검색).

21

예. ClassLoader.getResources("")을 사용할 수 있습니다.

아니면 흰 족제비 API를 사용할 수는 :
https://www.ohloh.net/p/pureperfect-ferret

이 API는 클래스 경로뿐만 아니라 방문자 패턴을 사용하여 임의의 아카이브 및 디렉토리를 검색 할 수 있습니다.

+0

한 올바른 솔루션 먼저 파일을 읽고, ("") –

+0

나는 ClassLoader.getResources'믿는 모든 클래스 로더과 웹 컨테이너에서 작동합니다 '단지 항아리에는 효과가 없습니다. [이 질문] (http://stackoverflow.com/questions/21836950/urlclassloader-getresources-empty-resource-name-not-giving-roots-of-jars)에 대한 의견을 참조하십시오. 또한 Spring의'PathMatchingResourcePatternResolver'는 [해당 문서] (http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html)의 트릭을 언급합니다. JAR에서 자원을 실제로 찾도록 구현되었습니다 ("이식성에 대한 함의"절 참조). – pazabo

+0

예, jar에서 작동합니다. 모든 환경에서 작동합니다. – jcfolsom

3

나는이 수행 - 포장하기 전에, ls myResources/*.ext > myResources/list.txt 이 - 그럼 그냥

관련 문제