Как я нахожу ресурсы в .jar на пути к классу?

Если у меня есть набор файлов ресурсов в каталоге на моем пути к классу, я могу перечислить их использование ClassLoader.getResources(location).

Например, если я имею /mydir/myresource.properties на пути к классу я могу назвать classloader's getResources("mydir") и получите перечисление URL, содержащих myresource.properties.

Когда я собираю те же самые ресурсы в .jar, я ничего не получаю в перечислении URL, когда я выполняю вызов. Я только заменил структуру папок банкой, содержащей те папки (это - веб-приложение, таким образом, банка входит /WEB-INF/lib). Я также получил много других использований вызовов getResourceAsStream(location) для получения других ресурсов индивидуально по имени и они все хорошо работают.

Что является особенным в перечислении ресурсов, когда ресурсы находятся в .jar?


Обновление - я воспроизвел (выход) поведение вне контейнера. Следующий отрывок приводит к dirProperties ключи установки объекта к ресурсу называют в пакете, но если пакет находится в бросках .jar NullPointerException во время метода Properties.load(InputStream).

Properties dirProperties = new Properties();
dirProperties.load(this.getClass().getClassLoader().getResourceAsStream(location));

Тот же код контейнера (Tomcat 5.5) не выдает исключения, но производит пустой объект Свойств, когда файлы находятся в .jar.

8
задан brabster 31 March 2010 в 15:45
поделиться