筆者最近用JAVA開發(fā)一個小工具,用到了圖形界面,在eclipse中編程沒有問題,可以正常顯示在圖形界面中加載的圖片,但是打成JAR包后雙擊運行卻沒有任何反應。
因為在eclipse中可以正常運行,所以無法用設置斷點調試的辦法來查找問題,于是用命令行來執(zhí)行程序,在cmd中輸入命令:
Java -jar chat.jar
出現(xiàn)如圖1所示界面。
報空指針錯誤,根據(jù)提示找到Images.java的第七行代碼如下:
得知圖片初始化時找不到圖片的原因。
圖1 程序執(zhí)行報錯界面
圖2 代碼結構圖
圖3 修改之后的代碼結構圖
于是查閱資料,想到先獲取圖片的路徑,再初始化圖片來解決這個問題,使用的代碼如下:
但問題依舊。
換一種獲取路徑的方法,使用如下代碼:
還是沒能解決問題。于是分析一下代碼的結構,如圖2所示。
從網(wǎng)上找了一些別人的代碼來分析,發(fā)現(xiàn)有些人的代碼是將保存圖片的文件夾images和初始化圖片的類放在同一個包中,這樣JAVA編譯之后通過相對路徑仍可以找到圖片,那么參考這種方式,應該就可以解決這個問題了。
調整目錄結構,如圖3所示。初始化圖片的語句改為:
項目中找不到資源一般就是路徑問題,用絕對路徑可以解決一部分問題,但會造成程序的可移植性變差,一般還是需要用相對路徑。使用相對路徑要注意,程序編譯之后再執(zhí)行的路徑是否會發(fā)生變化。