Posso me listar os recursos em um determinado pacote?
Pergunta
Vamos assumir minhas aulas são carregados a partir de um arquivo .war compactado ou carregado em outro lugar, como posso descobrir todos os recursos em um determinado pacote? arquivos enumerando realmente não vai funcionar, uma vez que este é um arquivo de guerra. Muito provavelmente isso vai envolver usando o carregador de classe atual?
Existe uma biblioteca lá fora que faz algo assim? Googling revelou apenas alguns hacks com listagem de arquivos.
Solução
Não, você não pode recursos de lista em um pacote porque a JVM simplesmente não sabe o que recursos estão em qual pacote. Consulte este pergunta .
Outras dicas
Sim. Você pode usar ClassLoader.getResources("")
;
Ou você pode usar API ferret:
https://www.ohloh.net/p/pureperfect-ferret
Esta API permite digitalizar o caminho da classe, bem como arquivos arbitrários e diretórios usando o padrão Visitor.
O Spring Framework oferece uma classe chamada PathMatchingResourcePatternResolver
. Com esta classe você pode dar caminhos estilo Formiga com wildcards e vai encontrar os recursos relevantes para você (busca pelas pastas e frascos no classpath).
Eu faço isso:
- antes da embalagem, ls myResources/*.ext > myResources/list.txt
- em seguida, basta ler o arquivo primeiro