Java WebApp:从位于WEB-INF中的.jar加载资源

时间:2010-04-06 10:40:49

标签: java jar resources web-inf

有很多类似的问题,但是,我的可能有点不同:

从位于.jar文件夹中的WEB-INF/lib文件内部加载资源的正确方法是什么(如果我知道jar文件名和它所属的类的名称),而Web应用正在运行?我应该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 个答案:

答案 0 :(得分:4)

您应该使用<name-of-known-class>.getResourseAsStream(?),它使用“本地”类加载器加载资源。对于webapp,这将使用webapp的类加载器。

getServletContext().getResourceAsStream(?)方法将返回相对于webapp根目录的webapp资源,并且无法查看JAR文件。

此方法的javadoc描述了您需要指定的路径,但基本上您可以使用相对于已知类的路径,例如

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