Java WebApp: Loading resource from .jar located in

2019-08-26 16:53发布

There are a lot of similar questions, but, probably, mine is a little bit different:

What is the right way to load resource from inside of .jar file located in WEB-INF/lib folder (if I know the jar file name and the name of the class it resource belongs to), while Web Application is running? Should I use getServletContext().getResourceAsStream(?) for this purpose or the <name-of-known-class>.getResourseAsStream(?), and what path do I need to specify there?

So, the structure is:

/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条回答
Bombasti
2楼-- · 2019-08-26 17:45

You should use <name-of-known-class>.getResourseAsStream(?), which loads resources using the "local" classloader. In the case of a webapp, this will use the webapp's classloader.

The getServletContext().getResourceAsStream(?) method will return webapp resources relative to the webapp root, and cannot look inside JAR files.

The javadoc for this method describes the path you need to specify, but essentially you can use paths relative to the known class, e.g.

SomeKnownClass.class.getResourceAsStream("required-file.xml");
查看更多
登录 后发表回答