2012-03-27 70 views
0

我閱讀了所有帶有答案的問題,但它仍然不適用於我。從Web應用程序的jar中加載資源

在我的web應用程序中,我有一個包含少量圖像和xml的jar。這些是該jar本身中的類所必需的。所以我修改了所需的線路如下:前

Thread.currentThread().getContextClassLoader().getResource(path) // returns null 

我也試過:

我使用改變了我的罐子指資源(這是目前的jar本身內部)中的類

MyClassName.class.getResource(path) // null again 

我讀了很多關於這一點,一定要知道的代碼更晚的線將能夠拿起資源,但遺憾的是沒有的工作對我來說......我失去了什麼?

注:運行在Tomcat7和因爲我在Vista上運行,我得到的「路徑」值「\ MyFolder文件\圖像\」

感謝

+1

什麼是你正在使用的確切路徑值和最新罐子內的資源文件或文件的位置? – davidfrancis 2012-03-27 22:54:47

+0

路徑從jar中的另一個config.xml中挑選出來(這是完美的讀取).xml中給出的路徑是'/ alpha/images',即 MyJar.jar | | ___ alpha | | ____images 但因\ windows \的\ alpha \圖像的變化(我想這是唯一的原因?) – Akshat 2012-03-28 05:35:09

+0

你能給出你傳遞給getResource方法的確切路徑值嗎?它需要根據您使用類加載器還是類方法來查找資源而有所不同。 「類」版本(我建議)的路徑應該是像「images/myImage.gif」。這假定您的圖像位於當前類的包文件夾的圖像子文件夾中,並且圖像文件稱爲myImage.gif。 – davidfrancis 2012-03-28 07:46:51

回答

1

有一個必須注意,當幾個點從jar中加載資源,並將其嵌入到Web應用程序中

  1. 加載文件與加載資源不同。當我們使用File.seperator時,它通常是w.r.t文件和絕對路徑。不建議加載資源。
  2. 從jar中加載資源時,確保沒有使用File.seperator並使用正常的'/',因爲它是jar的相對路徑。
  3. 如果您正在從jar中的xml讀取屬性...並且該屬性引用了另一個位置,請確保您正在使用'/'斜槓讀取它。同樣,File.seperator不會加載資源,你的罐子代碼加載資源時,請使用以下行

    MyCurrentClass.class工作,因爲它會取代「/」與「\」(Windows系統)

  4. 最後。的getResource(路徑)

希望它可以幫助人們對付個XML的Web應用程序

相關問題