把圖片導出到jar文檔

用Eclipse導出jar包,可能會遇到所用的圖片怎麼打不到jar中。那麼怎樣才能把圖片導入到jar中,好吧,咱們來簡單的說說。分兩種編譯路徑來講。 java

狀況一:eclipse

一、  Window-Prefences中的Build Path以下:ui

Eclipse把資源文件(圖片等)打入jar包 - 竹禕 - 竹禕的博客 

二、  工程temp、包test.sfx及源文件Test.java、存放圖片的文件夾images及圖片surfing.gif的關係以下:spa

Eclipse把資源文件(圖片等)打入jar包 - 竹禕 - 竹禕的博客

Test.java的源碼:.net

package test.sfx;圖片

import javax.swing.*;ip

 

public class Test {資源

 

    JFrame jf=new JFrame("Test");字符串

    JLabel jl=null;get

   

    public Test(){

      

       jl=new JLabel(new ImageIcon(Test.class.getResource("/images/surfing.gif")));

       jf.add(jl);

       jf.setSize(300,300);

       jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       jf.setVisible(true);

    }

 

    public static void main(String[] args) {

       new Test();

    }

 

}

注意粗體部分的爲使用圖片的方法Test.class.getResource("/images/surfing.gif")Test是使用圖片所在類的類名,字符串前有/

三、  導出jar包名爲test.jar,這個就不用說啦,你們都知道啊

四、  用winrar打開test.jar,以下圖

   Eclipse把資源文件(圖片等)打入jar包 - 竹禕 - 竹禕的博客  

images裏存放serfing,gif,sfx裏存放的是Test.class。事實上getResource("/images/surfing.gif")的字符串前

【1】        有/時,系統從bin目錄開始搜索,找到images,在找到suring.gif的。打成test.jar文件,這個文件就至關於bin,因此由上面的目錄樹可知依然能夠找到圖片。當咱們在src中建立images文件夾並把圖片放在其中,記得要在工程目錄上右擊選擇refresh,以後運行,eclipse會自動在bin目錄下建立一個文件夾images,存放的資源和src下的是同樣的。就是說eclipse會將src中的文件夾連同.java文件生成的class文件和資源文件一同放到bin下。打成jar後,jar文件就至關於bin。

【2】        沒有/時,是從包目錄開始搜索的,因此能夠把images放到src/test/sfx下面,以後refresh,運行,會發如今bin/test/sfx下有images,其實道理就是粗體部分所說的啊!

【3】        能夠把圖片surfing.gif直接放在src/test/sfx下面,那麼紅體字符串就是surfing.gif

狀況二

1、若是在Window-Prefences中的Build Path以下:

Eclipse把資源文件(圖片等)打入jar包 - 竹禕 - 竹禕的博客

2、工程temp、包test.sfx及源文件Test.java、存放圖片的文件夾images及圖片surfing.gif的關係以下:

Eclipse把資源文件(圖片等)打入jar包 - 竹禕 - 竹禕的博客

3、代碼中的紅體字符串仍是/images/surfing.gif,這裏的搜索就是從工程temp開始的了。打成jar文件後,jar文件也就至關於工程目錄。若是是images/surfing.gif,就是從test/sfx開始搜索,因此能夠把images放在test/sfx下,注意字符串變成了images/surfing.gif,以後refresh。運行正常,打包也能夠運行。

補充

對了還有Test.class.getResource("/images/surfing.gif")能夠用

Test.class.getClassLoader().getResource("images/surfing.gif")來替換,這個類加載器,怎麼查找實在是複雜。在磁盤上文件位置不變的狀況下,代碼中這兩種寫法都是正確的哈。

 

 

重點:

咱們把圖片導進jar裏面,這樣才方便程序獲取資源。

因而咱們經過,類名.class.getResource("路徑");來獲取資源的話,在咱們導出的時候就能夠把相應的資源一塊兒導出。

當咱們使用絕對路徑的話,咱們的根目錄就是src文件夾(例如:」/example/image.jpg「)

當咱們使用相對路徑的時候,咱們的初始相對路徑就是對應class所在的文件夾(例如:」example/image.jpg「)

相關文章
相關標籤/搜索