2010-04-06 66 views
0

有很多類似的問題,但是,也許我的是不同的一點:Java的Web應用程序:從位於的.jar加載資源WEB-INF

什麼是從內部加載資源的正確方法.jar文件位於WEB-INF/lib文件夾(如果我知道它的資源所屬的類文件名和它的名稱),而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

http://stackoverflow.com/questions/2552793/reading-xml-file-inside-a-jar-package http://stackoverflow.com/questions/2504272/shipping-java-code-隨着數據烘烤到罐子裏 http://stackoverflow.com/questions/861500/url-to-load-resources-from-the-classpath-in-java http://stackoverflow.com/問題/ 1108434/howto-load-a-resource-from-web-inf-directory-of-a-web-archive 似乎相似的問題 我的區別:我通常指定'getServletContext.getResourceAsStream('/ WEB- INF/classes/blah/blah/resource.xml')'來加載不在'.jar'中的資源。如果沒有錯,什麼道路是震驚的? – 2010-04-06 10:46:13

回答

3

您應該使用<name-of-known-class>.getResourseAsStream(?),它加載使用 「本地」 的類加載器的資源。在webapp的情況下,這將使用webapp的類加載器。

getServletContext().getResourceAsStream(?)方法將返回相對於webapp root的webapp資源,並且不能查看JAR文件。

該方法的javadoc描述了您需要指定的路徑,但基本上可以使用相對於已知類的路徑,例如,

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

謝謝!現在我知道正確的方法:)。 – 2010-04-06 12:53:13

相關問題