Eclipse有個功能就是把整個項目打包成一個可執行的Jar文件,里面包含了所有項目引用了的庫,如果電腦上安裝了JRE,直接雙擊就可以啟動,看起來很方便,如下圖所示:

可以選擇把所有類庫打包進去,也就是Jar里面還包含一堆Jar:

還可以生成ant腳本:

生成的jar文件,可以直接通過java -jar xx.jar啟動,簡單快捷。
然而,這樣導出來的可執行jar,啟動速度卻非常慢,這跟包的大小有關。有個項目導出來的包有40MB,結果啟動需要近一分鐘,在性能差的電腦上,甚至要幾分鐘,就是你執行完命令后,沒有任何界面顯示,但是查看任務管理器發現java進程的CPU占用率在浮動,說明正在努力啟動,過了一段時間之后界面突然顯示出來,簡直讓人崩潰。可是在Eclipse里面運行,卻是一點就開。
我開始嘗試縮小導出的包。但是Eclipse的導出對話框并沒有提供需要打包哪些庫的選項,都是默認把所有庫都打包進去,但是它可以生成ant腳本,可以通過編輯ant腳本的方式來減少不必要的庫。經過多次嘗試,終于把40MB的包縮成了17MB,啟動速度快了一些,但是依然需要半分鐘以上。
后來覺得,能不能不打包直接運行呢?于是把導出來的包用壓縮軟件解壓,再把里面包含的jar包繼續解壓,最后得到一堆沒有壓縮的class文件,再通過指定classpath的方式,直接運行程序入口class,發現啟動速度和在Eclipse里面一樣,一點就開。
打包的好處是部署簡單,只需要一個文件,但帶來的缺點實在不能忍,打散的方式部署起來稍微難一點,但是啟動速度夠快,對普通用戶來說,這個才是最重要的。
當然,還有一種方式是像Eclipse那樣,啟動時顯示一個圖片,底下一個進度條顯示啟動進度,不過這樣也加大了工作量,而且每次都要等那進度條,實際上也很煩。