1. 程式人生 > >如何把jar打包成exe

如何把jar打包成exe

轉載自:http://tieba.baidu.com/p/2851384409

如何把jar打包成exe,做個教程好了。


在這裡,我們要實現兩個目標:
1.把java程式檔案(jar檔案)打包成應用程式檔案(exe檔案)。
2.捆綁jre,使java程式能在java環境的電腦上執行。


下面,我將會介紹市面上的三款小軟體,利用其中的一款或兩款,就能實現上述目標:
1.Jar2Exe Wizard,該軟體能實現目標1。
2.JavaLaucher,該軟體能實現目標2。
3.exe4j,該軟體能同時實現目標1和目標2。(附件中的版本好像是64位的,如果32位的系統不能用的話,請自己用百度搜吧。)




不過在此之前,我們得準備一些實驗素材:1個jar檔案,一張png圖片




但是這樣還不夠,因為exe檔案的圖示得是ico格式的圖示檔案,所以我們得先把圖片轉換成圖示。在這裡,我推薦兩個線上圖示製作的網站:converticon.和諧com、www.和諧ico.la。個人喜歡前面那個,因為至少介面好看多了。


好了,開啟網站後,點選Get Started:




彈出瀏覽視窗後,選擇我們準備好的這張圖片:




點選Expot:




選擇需要的尺寸,並點選Save As(那個Original Size是原尺寸的意思,這裡不建議使用,貌似製作出來的有問題):




都儲存到D盤好了:




於是我們現在有了以下三個檔案:




好了,前期準備工作做完了,現在我們開始使用上面說的小軟體吧。




首先,我來介紹一下Jar2Exe Wizard,Jar2Exe Wizard作為一款打包軟體,其優點是操作方便(我這裡用的是1.8版本的,1.6版本的更簡單一點),缺點是沒有捆綁jre功能。


我們開啟這個j2ewiz.exe檔案:




點選“瀏覽JAR”,選擇需要打包的jar檔案,在下面的版本號中選擇相對應的jre版本,稍微選低一點貌似也無所謂:




因為我的這個程式是個視窗程式,並不需要控制檯,所以我選擇第二個,如果想要顯示控制檯,可以選第一個:




軟體會自動識別main方法所在的類,如果有多個的時候,就得選擇了。下面那個Splash視窗,由於該軟體貌似不支援透明的圖片,所以這裡就不設定了(至於Splash視窗是什麼,用過adobe軟體的同學都知道,開啟軟體之前會有一個花哨的視窗,那個就是了):




反正我也不會反編譯打包過的檔案,而且也不怕別人反編譯,所以我就不隱藏class檔案了:




我這個程式也沒有引用什麼jar包,所以也不需要設定了:




上面是輸出路徑,大家都懂的,下面的“圖示及版本”按鈕,請按一下:




點選“新增”按鈕可以新增圖示:




找到我們準備好的圖示:




這裡可以新增多個圖示,我們一個就夠了。下面是版本號,隨便填一下。再下面是一些版本資訊,雙擊可以彈出修改視窗,我把重要的都填一下,到時候打包後的exe檔案的屬性中就能看到這些資訊了:




點選OK,回來後,發現圖示變了,至於下面這個複選框,不重要:




當你看到這一頁的時候,打包已經完成了,你可以點選右上角的叉叉關掉了。當然,如果點選“引數配置”按鈕,配置完後,則會在當前目錄生成一個配置檔案。




看,exe檔案出現了,好神奇!






下面,我們要利用JavaLaucher進行打包,其優點是操作方便,修改也方便,缺點是要以“Lauch.exe”這個檔案開啟。


我們在D盤建立一個資料夾,把jre資料夾、打包後的“FileMerge.exe”檔案和“Launch.exe”檔案都複製進來,然後新建一個記事本:




把記事本重新命名為“launcher.cfg”,注意,檔名為“launcher”,副檔名為“cfg”:



開啟“launcher.cfg”檔案,在第一行寫上“.”,即當前目錄,在第二行寫上“javaw.exe”檔案的路徑,在第三行,先寫上“-jar”,加空格後,再寫上打包後的java程式路徑(第二行和第三行的“.\”可以省略,“Launch.exe”檔案、jre資料夾和java程式都可以隨便放,只要路徑寫對就行,但是“launcher.cfg”檔案必須和“Launch.exe”檔案放在同一目錄)。


是不是感覺很眼熟?沒錯,其實這就是呼叫命令提示符執行“jre1.7.0_45\bin\javaw.exe -jar data\FileMerge.exe”命令。如果你沒有“Launch.exe”檔案,新建一個記事本,將副檔名改成“bat”(批處理檔案),在裡面寫上“jre1.7.0_45\bin\javaw.exe -jar data\FileMerge.exe”,然後雙擊,也能執行,只不過多了個命令提示符視窗。
也就是說,“Launch.exe”檔案實質上就是一個用C#寫的呼叫命令提示符的小程式而已。




如果覺得JavaLaucher有點坑,那麼可以試試exe4j這個軟體。該軟體的優點是集打包和捆綁jre為一體,支援透明通道的Splash視窗,而且沒有那麼一堆配置檔案,但是缺點是操作複雜,而且想改路徑得重新打包,對了貌似我沒找到填寫版本資訊什麼的。


首先我們回到最初,一個jar檔案,一個png圖片檔案,一個ico圖示檔案,都放在D盤根目錄。



下面我們在E盤建立一個資料夾(作為打包輸出目錄),把jre資料夾放進來(打包輸出路徑不要是源jar檔案所在目錄或其子資料夾,這樣會導致exe4j找不到主類,別問我為什麼,我也不知道):




好了,開啟exe4j,出現第一個介面,可以看到,我用從百度上找的啟用碼激活了的(沒啟用的exe4j,使用Splash視窗的話,在Splash視窗前還會彈出個提示,內容是“this executable was created with an evaluation version of exe4j”):




選擇“JAR” in "EXE" mode:



上面填的是程式名稱,下面紅框裡的是打包輸出路徑,即打包後文件的儲存路徑,就是前面說的新建的資料夾:



最上面的單選框和Jar2Exe的一樣,視窗、控制檯和服務,複選框是是否支援執行引數。接下去是打包後的檔名。再下面是圖示檔案的路徑。那個我沒打勾的複選框,如果勾上,那麼打包後的exe檔案,無論你雙擊四次八次,都只能開啟一個。其他的預設就好。



看到右邊綠色的加號按鈕了嗎?趕緊點下去!



找到要打包的jar檔案:



要打包的jar檔案出現在列表裡了,這麼貌似能新增多個,我不知道是什麼心態……對了,再猛擊哪個紅框中的按鈕:



這裡會自動出現所有的主類,我們得選一個。上面說過了,輸出路徑得注意,如果打包輸出路徑是源jar檔案所在目錄或其子資料夾,那麼這裡就不會出現主類了:


點選OK後,主類出現在這裡了:



這裡要設定允許的最低jre版本,如果要支援透明通道的Splash視窗,那麼至少得寫1.6,對了,不能不寫。下面的看著辦,按需要設定。設定完後別急,別點NEXT,點選Advanced Options或者選擇左邊紅框裡的子頁面:


這裡列表顯示的是jre的搜尋序列,如果不想捆綁jre,這步可以跳過。可以看到,先搜尋的是登錄檔(jre安裝的時候,會在登錄檔登記路徑,所以移動jre會使jre失效),然後再是JAVA_HOME,第三是JDK_HOME,後兩個是系統的環境變數。我們現在點選右邊的綠色加號按鈕:



先選擇上面的Directory,再點選下面紅框裡的按鈕:



選擇我們複製到輸出目錄的jre資料夾:



選擇後變這樣,因為是在輸出目錄中的資料夾,所以是相對路徑“.\XXXXX”:



新加的搜尋路徑放在最後面可不行,我們點選右下角的向上按鈕,把它移到第一位:



其實下面3個路徑可以不要,有興趣的話,可以刪掉它們,選中後按右邊的紅色叉叉按鈕就行:



好了,設定Splash視窗了,單選框第一個是無Splash視窗,第二個的Splash視窗是不支援透明通道的,第三個Splash視窗支援透明通道,但是必須jre6以上,然後在下面選擇我們那張png圖片:



這裡沒什麼可設定的,直接過:



然後就是打包時間,很快的,好不容易才截到圖:



之後自動進入這個頁面,至此,jar檔案已經打包成exe檔案了,這裡的介面是問你是否儲存剛才的操作的:



看,出現了!出現了耶!






好了,教程到此結束,我把素材也上傳一下吧,5個附件,分別是Jar2Exe Wizard 1.8、Launch.exe、exe4j、FileMerge.jar、merge.png。

Jar2Exe Wizard.zip 大小:1.28MB 下載:1832次 轉存:782次 下載 轉存到百度雲 Launch.exe 大小:48.50KB 下載:1174次 轉存:698次 下載 轉存到百度雲 FileMerge.jar 大小:39.45KB 下載:505次 轉存:568次 下載 轉存到百度雲 merge.png 大小:199.68KB 下載:493次 轉存:561次 下載 轉存到百度雲 exe4j_windows-x64_4_...exe 大小:3.29MB 下載:2730次 轉存:987次 下載 轉存到百度雲