這裡主要是對今天遇到的打包問題進行記錄...
以便以後忘了或者可能會協助到需要協助的人...
我遇到的問題有:
1.fatjar打包問題
如果用了第三方jar包,想把自己的項目一次性打包成一個jar,那麼需要去下載fatjar,怎麼安裝我就不贅述了。
2.圖片顯示問題
我的項目裡面介面引用了圖片,直接在eclipse可以正常顯示,但是打包出去顯示不了
原因之一是My Code寫了引用的地址是 "src/xxx.jpg" ,這樣的錯的,因為編譯過後會放到bin目錄下,那樣就找不到 "src/xxx.jpg"
而且最好是用一個專門的檔案夾來放這樣的檔案 比如"resource/xxx.jpg"
引用地址的時候寫成resource的相對路勁 "/resource/xxx.jpg" 即可。
Toolkit tk = Toolkit.getDefaultToolkit();Image image = tk.createImage("/resource/xxx.jpg");
後來我圖片引用得很多 我就寫了一個類來放這些靜態變數 然後其他地方引用這些靜態變數即可 目的是好維護。
3.jar引用外部圖片的問題
我想把我的圖片不打包進jar,而是在jar的外面,那樣方便我以後替換。
tk.createImage("/resource/xxx.jpg");的createImage可以給URL和filename
我開始用的URL
this.class.getResource("/resource/xxx.jpg");取圖片路勁,
但是無論怎麼取 這個方法都只能得到 我的項目/bin/ 這個目錄
不能得到bin的同級或者上面層級的目錄,不知是不是我用法沒對。
最後換成
String filename = System.getProperty("user.dir") + "/resource/xxx.jpg";createImage(filename);
的方法解決問題。
感覺要是jar包引用外部圖片的話 只能給filename 用 URL 始終不行...
4.Class-Path問題
總感覺fatjar打包不太好,而且打包出來會多一些fatjar的包 大概30KB左右
還是自己在MANIFEST.MF修改Class-Path很好
注意空格
Manifest-Version: 1.0Main-Class: hnysms.ShowMeClass-Path: . lib/log4j-1.2.15.jar lib/jdsmsserver-3.4.jar lib/mysql-connector-java-5.1.3-rc-bin.jar
5.jar讀取外部設定檔的問題
我想把我項目裡面的設定檔 比如dbconfig.properties log4j.xml 不打包進jar
因為打包進去跟寫入程式碼沒多大區別了..
dbconfig.properties 直接可以在讀取的代碼裡面寫成
InputStream ins = getClass().getResourceAsStream("/resource/dbconfig.properties");
這樣在eclipse會出錯 打包出來是可以的。
但是log4j.xml 需要在你的main方法裡面寫
PropertyConfigurator.configure(System.getProperty("user.dir") + "/resource/log4j.xml");
這樣問題就解決了...
付一張做好的程式
^_^ 很小菜的