jar包及jar包中圖片加載

字號(hào):

jar cvf *.jar *.class *.jpg打好jar包后
    1. 若要jar包可打開執(zhí)行,則改動(dòng)jar包內(nèi)MET-INF文件夾下MANIFEST.MF添加一行Main-Class:主類名,即可。
    2. 對(duì)于加載圖片,見:轉(zhuǎn)載(1)你將所有資源打包為andy.jar,你的類位于一個(gè)包中:package andycpp;你的圖片資源全部放在images文件夾中,而images文件夾也位于andycpp包內(nèi)。這樣的話,最終的路徑表現(xiàn)為:
    andy.jar
    |__andycpp
     |__ GUITest.class
     |__ images
     |__ Snap1.jpg
    因?yàn)閳D片文件夾和引用他的類位于同一個(gè)層次,因此可以通過(guò)相對(duì)路徑來(lái)訪問(wèn):
    java.net.URL imgURL = GUITest.class.getResource("images/Snap1.jpg");
    ImageIcon img1 = new ImageIcon(imgURL);
    要注意的是,每個(gè)類(注意,不是對(duì)象)都有一個(gè)getResource()方法,但是你不能隨便用,你只能使用和圖片文件夾處于同一層次的類的getResource()方法。GUITest類和images處于同一層次,所以要使用該類的getResource()方法。
    (2)另一種情況,如果你的類有很多,并且包結(jié)構(gòu)很復(fù)雜,那么你就不大可能把圖片和類放在同一個(gè)層次上,而是應(yīng)該把圖片放到最外層,讓所有的類通過(guò)絕對(duì)路徑來(lái)訪問(wèn)該圖片:
    andy.jar
     |__andycpp
     |__ GUITest.class
     |__ images
     |__ Snap1.jpg
    代碼如下:
    java.net.URL imgURL = GUITest.class.getResource("/images/Snap1.jpg");
    ImageIcon img1 = new ImageIcon(imgURL);
    區(qū)別是在“images”的前面加了一個(gè)反斜杠"/",這個(gè)反斜杠就表示根目錄,沒有反斜杠就表示相對(duì)路徑。