有很多类似的问题,但是,我的可能有点不同:
从位于.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
答案 0 :(得分:4)
您应该使用<name-of-known-class>.getResourseAsStream(?)
,它使用“本地”类加载器加载资源。对于webapp,这将使用webapp的类加载器。
getServletContext().getResourceAsStream(?)
方法将返回相对于webapp根目录的webapp资源,并且无法查看JAR文件。
此方法的javadoc描述了您需要指定的路径,但基本上您可以使用相对于已知类的路径,例如
SomeKnownClass.class.getResourceAsStream("required-file.xml");