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