標籤:java eclipse jar
說明:在eclipse中運行java程式的時候一切正常,可是當把jar包匯出的時候卻發現圖片沒法顯示,這估計是java程式的各種配置和路徑問題所導致,後來找到一種解決方案,供遇到這方面問題的學習java程式的鞋同參考:
Java項目下的目錄結構如下:
其中class類放在包:package accpedu; (即實際是在如上bin/accpedu檔案夾下面)
通過下面的方法來引用圖片時,在eclipse裡面執行是可以正常顯示圖片的:
ImageIcon image1 = new ImageIcon();
ImageIcon image2 = new ImageIcon();
ImageIcon image3 = new ImageIcon();
ImageIcon image4 = new ImageIcon();
ImageIcon image5 = new ImageIcon();
image1 = new ImageIcon("images/butffler.jpg");
image2 = new ImageIcon("images/username.gif");
image3 = new ImageIcon("images/password.gif");
image4 = new ImageIcon("images/warning.gif");
image5 = new ImageIcon("images/role2.jpg");
但是匯出jar包school2.jar後執行,卻發現圖片沒有顯示出來:
經過一番分析和調試之後,找到了一種解決方案,將引用圖片的那段代碼修改為下面的方式:
//這種方法即可以在eclipse下找到圖片路徑,也可以在匯出的jar包中找到圖片路徑
//圖片必須要放在class目錄下面
java.net.URL imgURL1 = LoginFrame.class.getResource("butffler.jpg");
image1 = new ImageIcon(imgURL1);
java.net.URL imgURL2 = LoginFrame.class.getResource("username.gif");
image2 = new ImageIcon(imgURL2);
java.net.URL imgURL3 = LoginFrame.class.getResource("password.gif");
image3 = new ImageIcon(imgURL3);
java.net.URL imgURL4 = LoginFrame.class.getResource("warning.gif");
image4 = new ImageIcon(imgURL4);
java.net.URL imgURL5 = LoginFrame.class.getResource("role2.jpg");
image5 = new ImageIcon(imgURL5);
然後還需要匯入一個圖片的jar包,由於這種方法必須把圖片檔案(如butffler.jpg)放在class的相同目錄下,即放到目錄accpedu下,否則會找不到圖片路徑的;這樣需要把images檔案夾改名為accpedu並壓縮為accpedu.jar包,其中accpedu檔案裡面就是直接的圖片檔案,沒有多餘的檔案夾,這是因為class類放在包:package accpedu;中;然後就可以匯入accpedu.jar到項目中,如下:
通過這樣的命名規則(package accpedu;)匯入accpedu.jar包後,其圖片會自動匯入到了class相同的目錄下:
然後再匯出java程式的可執行檔jar包school.jar:
解壓school.jar包後,圖片的確匯入到了class相同的目錄下:
注意:圖片的jar包的命令規則必須與class在包中package的結構一致,這樣才能正確的把需要匯入的圖片導到class相同的目錄下;另外,用這種方法來顯示圖片,必須確保圖片導到了class目錄下,否則程式運行會出現問題,假片檔案名稱寫錯了butffler.jpg 寫成butffler1.jpg,即會出現下面問題,不僅圖片顯示不出來,更嚴重的是整個登入框可沒顯示完整,這是需要注意的:
到此,上述就是一種關於解決eclipse匯出java程式的可執行檔jar包的圖片無法顯示的方法!
Eclipse下匯出java程式可執行檔jar包圖片無法顯示問題的一種解決方案