2013-03-15 47 views
0

我正在製作一個使用JFrame的遊戲來加載要顯示的圖像。然後當我試圖運行程序時,它沒有在jar中找到圖像。那麼,如何從jar中檢索文件?是/img.png還是img.png甚至\\img.png?我只是不知道java中的路徑如何工作。Java如何在jar文件中使用圖像

(編輯)想通了。

回答

0

/img.png是正確的。你怎麼試圖加載它?您需要使用知道該JAR文件的類加載器來獲取映像文件。

試試這個方法:

http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)

嘗試是這樣的,假設JAR文件在類路徑中。

public class MyClass { 
    public static void main(String[] args) { 
     InputStream is = MyClass.class.getClassLoader().getResourceAsStream("/img.png"); 
     // read in the data stream 
    } 
} 
+0

編碼我正在使用的圖像圖標。所以它會是這樣的:ImageIcon i = new ImageIcon(「/ img.png」); – 2013-03-15 02:24:13

+1

@HarrisonBergeron不,它會''ImageIcon i = new ImageIcon(getClass()。getResource(「/ img.png」));' - 將'String'傳遞給'ImageIcon'將假定該值是一個文件引用,它不是 – MadProgrammer 2013-03-15 03:05:01

+0

@MadProgrammer那麼,它只會是這樣的,如果它在jar文件中? – 2013-03-15 19:57:22

0

例如,這是jar文件結構

Jar File Stucture

確保罐子是在類路徑,那麼像這樣的

String file01="tom.txt"; 
String file02="com/paic/jerry.txt"; 
InputStream tom=this.getClass().getClassLoader().getResourceAsStream(file01); 
InputStream jerry=this.getClass().getClassLoader().getResourceAsStream(file02); 
+0

哦,因爲我聽說如果一個圖像是在一個jar文件,它會是「/tom.txt」 – 2013-03-15 02:23:06

+0

我認爲如果你把文件放在jar文件的根目錄下,那麼不需要「/」 – 2013-03-15 02:26:04

+0

Oooh我雖然是相反的。 – 2013-03-15 02:27:30