0

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

.jar在 Web 应用程序运行时,从文件夹中的文件内部加载资源的正确方法是什么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
4

1 回答 1

4

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

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

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

SomeKnownClass.class.getResourceAsStream("required-file.xml");
于 2010-04-06T10:45:12.047 回答