Java WebApp: загрузка ресурса из .jar, расположенного в WEB-INF - PullRequest
0 голосов
/ 06 апреля 2010

Есть много похожих вопросов, но, возможно, мой немного отличается:

Как правильно загрузить ресурс из файла .jar, находящегося в папке WEB-INF/lib (если я знаю имя файла jar и имя класса, к которому он относится), когда запущено веб-приложение? Должен ли я использовать getServletContext().getResourceAsStream(?) для этой цели или <name-of-known-class>.getResourseAsStream(?), и какой путь мне нужно там указать?

Итак, структура:

/WEB-INF
    /classes
        /some/package/name
           ?.class #some Java code or Servlet that tries to read 'required-file.xml'
    /lib
        /<jar-with-known-name>.jar
            /another/package/with/known/name
                SomeKnownClass.class
                required-file.xml

1 Ответ

4 голосов
/ 06 апреля 2010

Вы должны использовать <name-of-known-class>.getResourseAsStream(?), который загружает ресурсы, используя "локальный" загрузчик классов. В случае веб-приложения будет использоваться загрузчик классов веб-приложения.

Метод getServletContext().getResourceAsStream(?) возвращает ресурсы веб-приложения относительно корня веб-приложения и не может заглянуть внутрь файлов JAR.

javadoc для этого метода описывает путь, который вам нужно указать, но по существу вы можете использовать пути относительно известного класса, например,

SomeKnownClass.class.getResourceAsStream("required-file.xml");
...