2013-05-26 40 views
0

我在做一個Java項目,現在完成了,我想創建一個.jar版本。 但是,當我運行.jar版本時,圖像不包括在內。我正在與Mac上的Netbeans合作。圖像未在.jar中運行

我儘量讓這樣的代碼:

private static String chemin = System.getProperty("user.dir"); 
private String fond_path = chemin+"/src/hepta/Images/FondParametres.png"; 

fondPanels = new ImageIcon(fond_path); 

但它看起來像的.jar版本無法正常工作,甚至如果圖像是在比以前同一個地方!

我的問題是,爲什麼它不同,因爲路徑可用?

(我準確的,我做了一些研究,發現一些像這樣的代碼:

URL imageurl = getClass().getResource("/images/images2.gif"); 
Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl); 
JLabel piclabel = new JLabel(new ImageIcon(myPicture)); 

,但我真的不理解上的差異)

謝謝!

回答

3

區別在於,第一個是文件引用。路徑指向文件系統內的文件。

第二個是資源引用,它指向一個zip文件中的一個條目,即Java知道如何讀取。

當您查看包含.jar文件的文件夾時,將不會有沒有目錄src/hepta/Images。這意味着如果您嘗試使用文件引用,則Java將無法找到有問題的文件。

相反,您需要告訴Java根據它的類路徑/搜索路徑來查找資源,該資源指向嵌入.jar文件內的資源 - 這只是一個帶有一些額外內容的zip文件。 ..

+0

看起來很好,謝謝你的解釋=) – user2057209

+0

最後一個問題,如果我想給某人我的項目,我只能包含一個包含.jar和項目的.zip,對不對? – user2057209

+0

您只需要給他們'.jar'和任何可能的依賴關係。壓縮罐子是可選的... – MadProgrammer