【问题标题】:Java WebApp: Loading resource from .jar located in WEB-INFJava WebApp:从位于 WEB-INF 中的 .jar 加载资源
【发布时间】:2011-02-04 18:20:34
【问题描述】:

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

在 Web 应用程序运行时,从位于 WEB-INF/lib 文件夹中的 .jar 文件中加载资源的正确方法是什么(如果我知道 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

【问题讨论】:

标签: java jar resources web-inf


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多