Могу ли я перечислить ресурсы в данном пакете?
Предположим, что мои классы загружены из сжатого файла.war или загружены в другом месте, как я могу обнаружить все ресурсы в данном пакете? Перечисление файлов на самом деле не будет работать, так как это файл войны. Скорее всего, это будет связано с использованием текущего загрузчика классов?
Есть ли библиотека, которая делает что-то подобное? Поиск в Google показал только несколько взломов с перечислением файлов.
4 ответа
Нет, вы не можете перечислить ресурсы в пакете, потому что JVM просто не знает, какие ресурсы в каком пакете. Смотрите этот вопрос.
Да. Ты можешь использовать ClassLoader.getResources("")
;
Или вы можете использовать API хорька:
https://www.ohloh.net/p/pureperfect-ferret
Этот API позволяет сканировать путь к классам, а также произвольные архивы и каталоги, используя шаблон Visitor.
Spring Framework предлагает класс под названием PathMatchingResourcePatternResolver
, С помощью этого класса вы можете задавать пути в стиле Ant с подстановочными знаками, и он найдет для вас соответствующие ресурсы (поиск по папкам и банкам на пути к классам).
Я делаю это:
- перед упаковкой, ls myResources/*.ext > myResources/list.txt
- тогда сначала просто прочитайте файл