2012-06-04 77 views
2

我一直有出口我的Java項目(在Eclipse)一罐問題。我在名爲images的jar中包含了一個文件。它包含我的項目使用的所有圖像文件。問題是,我對這些圖像的引用,只有當項目不是罐子形式工作。我無法弄清楚爲什麼,我想知道是否需要更改圖像引用的措辭。這是我在做什麼參考圖片:在java中,如何從jar文件中檢索圖像?

URL treeURL = null; 
    Image tree = null; 
    File pathToTheTree = new File("images/tree.png"); 
    try { 
     treeURL = pathToTheTree.toURL(); 
    } catch (MalformedURLException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    try { 
     tree = ImageIO.read(treeURL); 
    } catch(IOException e) { 
     e.printStackTrace(); 
    } 

最有可能是一個簡單的問題,因爲我在編碼是一個初學者。如果這些參考文件全部放入jar中,那麼需要更改這些參考文件才能工作?

+0

可能重複:http://stackoverflow.com/questions/4870517/exporting-images-with-jar-in-eclipse-java&http://stackoverflow.com/questions/5698373/accessing-images -in-a-jar-file –

回答

5

確實很簡單:您可以使用java.lang.Classjava.lang.ClassLoader中的各種getResource()方法。例如,在您的應用程序,你可以只寫

treeURL = getClass().getResource("/images/tree.png"); 

這會發現在images目錄中的文件在JAR文件的根目錄。關於getResource()方法的好處是,他們的工作文件是否在一個罐子或不 - 如果images目錄是磁盤上的真實目錄,這將仍然工作(只要images父是你的類的一部分路徑)

+0

這解決了它,非常感謝你!但現在它不能在Eclipse中運行,只能以jar的形式運行......我可以通過任何方式重新排列文件或代碼來解決這個問題嗎? – Mordecai

+1

你只需要確保/被包括在生成的圖像和上運行時類路徑。 –

+0

哦,derp。好的,我也修正了這個問題。非常感謝!我花了數小時試圖做這個工作.. – Mordecai