posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          1.把程序的class文件打包成jar文件
          因?yàn)槲矣玫拈_發(fā)工具是eclipse,一般都是用它的插件fatjar打包c(diǎn)lass文件。
          fatjar下載地址:http://sourceforge.net/projects/fjep/files/
          本篇使用的測試程序是上一篇:借助瀏覽器控件利用CSS和javascript設(shè)計(jì)桌面程序界面中的HtmlFrame.jar

          2.把jar文件轉(zhuǎn)成exe文件,window平臺上可運(yùn)行的文件是exe,這一步需要把帶main()方法的jar文件轉(zhuǎn)成exe,
          新建文件夾HtmlFrame2,把HtmlFrame.jar和tree.html,放進(jìn)這個(gè)文件夾內(nèi),現(xiàn)在的HtmlFrame.jar只能在裝了jre的機(jī)器上跑,要讓它在沒有裝jre的機(jī)器上跑,我們需要為HtmlFrame.jar配一個(gè)jre,在一臺裝有jre的機(jī)器上把整個(gè)jre文件夾復(fù)制到HtmlFrame2,如我本機(jī)裝了JDK1.6.0_17,路徑C:\Program Files\java。可以直接把C:\Program Files\java中的文件夾jre6(也可以C:\Program Files\java\JDK1.6.0_17中的jre文件夾)復(fù)制到HtmlFrame2中,現(xiàn)在HtmlFrame2文件夾中有
          HtmlFrame2\HtmlFrame.jar
          HtmlFrame2\tree.html
          HtmlFrame2\jre6
          要讓HtmlFrame.jar可以運(yùn)行,需要告訴它jre的路徑。一種方法是用bat文件為HtmlFrame.jar設(shè)置classpath;另一種方法是通過第三方工具,如exe4j。
          第一種方法:使用bat文件啟動。新建文本文檔HtmlFrame.txt,輸入代碼:
          @echo off                  
          set classpath
          =.;jre6\lib\dt.jar;jre6\lib\tools.jar  
          set path
          =jre6\bin                                    
          start javaw 
          -classpath HtmlFrame.jar com.pengo.main.MenuTest
          保存文件,并把文件名改為HtmlFrame.bat,現(xiàn)在只要把整個(gè)HtmlFrame文件夾復(fù)制到其它沒有裝jre的機(jī)器(window系統(tǒng)),雙擊HtmlFrame.bat都能運(yùn)行。為了下一步安排包的制作,把bar轉(zhuǎn)成exe,借助BatToExeConverterSetup(一個(gè)把bat轉(zhuǎn)成exe的工具)把HtmlFrame.bat轉(zhuǎn)成HtmlFrame.exe。

          第二種方法:使用 exe4j 把jar轉(zhuǎn)成exe, 注意:exe4j 只能把jar轉(zhuǎn)變成 exe,它并不能把整個(gè)java程序的文件(例如jre)打成一個(gè) setup.exe 安裝包。下邊是它的使用說明:
          第1步,默認(rèn)即可,直接點(diǎn)擊next。


          第2步,選擇"JAR in EXE",點(diǎn)擊next


          第3步,上面是項(xiàng)目名稱,可隨便填寫,下面一個(gè)是把jar轉(zhuǎn)成exe文件后,exe文件的輸出目錄(建議和原jar路徑一致):


          第4步,HtmlFrame.jar是GUI程序,所以選第一個(gè),Executable name是生成的exe文件的名字,Icon File可以選擇是這個(gè)exe文件的圖標(biāo)


          第5步,單擊綠色的"+"號,在彈出的窗口中點(diǎn)Archive,然后找到HtmlFrame.jar,"OK"后返回,在下面的Class Path里就出現(xiàn)jar文件路徑后,再在上面Main Class欄內(nèi)點(diǎn)擊找到main()方法所在的類,這一步即算完成:




          第6步,確認(rèn)系統(tǒng)的JRE版本,上面填個(gè)1.4,下面填1.6:


          上邊配置的程序只能在安裝有JRE的機(jī)器上執(zhí)行,但發(fā)布時(shí)要考慮用戶的機(jī)器上是否安裝有JRE,總不能發(fā)布一個(gè)程序還要用戶自己安裝個(gè)JRE,下面為將要生成的exe指定jre路徑,在這里單擊advanced options,選擇search sequence。先把Search Sequence列表內(nèi)所有選項(xiàng)刪除,再點(diǎn)擊綠色"+",Entry Type選擇Directory,再在下邊的路徑選擇中選擇HtmlFrame2\jre6,


          單擊ok后,再從圖中單擊advanced options,并選擇preferred VM,在彈出的窗口中選擇client hostspot VM,單擊next按鈕繼續(xù):


          第7步,設(shè)置程序的啟動畫面,單擊next


          第8步,設(shè)置提示消息的語言,單擊next


          第9步編譯

          第10步,完成


          點(diǎn)這個(gè)看到效果了:

          使用exe4j把jar轉(zhuǎn)成exe后,原來的HtmlFrame.jar可以刪除。只保留生成的exe就可以了。

          至此,jar轉(zhuǎn)exe的工作已經(jīng)完成。

          3.精簡jre
          整個(gè)HtmlFrame2\jre6未壓縮前,大約是100M左右,如果把它也放進(jìn)安排包,那么整個(gè)安排包的體積將會很驚人,下面對jre進(jìn)行精簡。
          進(jìn)入jre6目錄,jre6目錄內(nèi),除了bin和lib兩個(gè)文件夾外,其它所有文件都可以刪除;
          進(jìn)入jre6\bin,隨便刪除一個(gè)文件,雙擊HtmlFrame.exe,如果能運(yùn)行,那么這個(gè)文件就是可以刪除的,如果不能運(yùn)行,就把這個(gè)文件還原回去。通過這個(gè)方法清理后bin和lib里面的文件,體積大概能減一半。
          進(jìn)入jre6\lib,你會發(fā)現(xiàn)rt.jar這個(gè)文件,大概40M,這是Java基礎(chǔ)類庫文件,里面有幾千個(gè).class類文件,但其實(shí)許多.class在程序里并未使用。先用WinRar解壓rt.jar,隨便刪除rt文件夾里面的文件,再用WinRar把rt文件夾內(nèi)的其它文件壓縮成一個(gè)zip格式文件,把zip后綴改成jar,放回jre6\lib中,雙擊HtmlFrame.exe,如果能運(yùn)行,則是可以刪除,不能運(yùn)行,就把類還原回去,再重復(fù)上邊的操作。這個(gè)方法精簡jre會比較累,不過這是我目前找到的最有用方法了。
          關(guān)于精簡rt.jar的方法,網(wǎng)上也有一些工具如:GreenJVM等,可以直接精簡rt.jar,可以把rt.jar體積減少到3M左右。不過本人用這些工具精簡出來rt.jar未試過可以運(yùn)行,估計(jì)是漏掉一些class。
          另外可以在dos下使用命令:
          java -jar -verbose:class HtmlFrame.jar >>class.txt  把用到的class輸出一個(gè)txt文件中,再對比進(jìn)行刪除。
          網(wǎng)上也有人提供一些精簡過的jre,需要的,可以自己上網(wǎng)找下。

          4.使用inno setup把整個(gè)HtmlFrame程序制作成setup.exe安排包。inno setup是一個(gè)免費(fèi)的、使用非常簡單的安排包制作工具,本篇文章使用的是inno setup簡體中文版本。有興趣的,也可以使用其它安裝包制作工具。隨便提一下另一個(gè)專門針對java程序的安裝包工具install4j,假如在步驟2中沒有給程序指定jre,install4j可以為程序綁定一個(gè)jre到安排包中。
          本篇使用的inno setup簡體中文版本。啟動inno setup,選擇文件→新建,
          第1步,inno setup的腳本歡迎向?qū)?br />

          第2步,配置應(yīng)用程序基本信息


          第3步,應(yīng)用程序文件夾信息


          第4步,選擇應(yīng)用程序文件,主執(zhí)行文件選擇HtmlFrame.exe;其它應(yīng)用文件需要把這個(gè)程序的相關(guān)資源文件和jre也添加進(jìn)去,我這里所有相關(guān)的文件都放進(jìn)HtmlFrame2文件夾內(nèi),因些直接“添加文件夾”選擇HtmlFrame2,"其它應(yīng)用程序文件"列表內(nèi)所有的文件都將會被打包到setup.exe文件內(nèi)。




          第5步,設(shè)置應(yīng)用程序圖標(biāo)


          第6步,設(shè)置安裝期間相關(guān)的顯示文件


          第7步,安裝語言


          第8步,編譯輸出文件名指安裝包的文件名,如輸入setup,生成的安裝包將為setup.exe;編譯輸出文件夾指生成的安裝包setup.exe的路徑;安裝程序圖標(biāo)文件指安裝包setup.exe的文件圖標(biāo);


          之后的直接點(diǎn)“下一步”,在出現(xiàn)立即編譯新的腳本提示時(shí),點(diǎn)擊“確定”進(jìn)行編譯。


          編譯完成后將會在“編譯輸出文件夾”生成一個(gè)setup.exe文件。


          整個(gè)安排包的制作過程到此已經(jīng)完成,現(xiàn)在可以把setup.exe發(fā)給其它人安裝使用。

          附件是我按上邊步驟制作出來的安裝包,需要的可以下載看下效果:
          附件: setup.exe.rar

          評論

          # re: 為java桌面程序制作安裝向?qū)С绦?nbsp; 回復(fù)  更多評論   

          2010-03-12 16:45 by highkay
          可以考慮用proguard精簡不需要的class,不過反射處理起來很麻煩。

          # re: 為java桌面程序制作安裝向?qū)С绦騕未登錄]  回復(fù)  更多評論   

          2010-03-14 00:10 by zhrb
          不錯(cuò),收藏一下

          不過jar文件在裝有虛擬機(jī)的電腦上不是可以直接點(diǎn)擊運(yùn)行嗎?

          # re: 為java桌面程序制作安裝向?qū)С绦?nbsp; 回復(fù)  更多評論   

          2010-03-14 11:20 by pengo
          @zhrb
          在裝有虛擬機(jī)的電腦上雙擊jar是可以直接運(yùn)行的.

          寫這篇文章主要是考慮在沒有虛擬機(jī)的電腦上運(yùn)行jar.

          # re: 為java桌面程序制作安裝向?qū)С绦?nbsp; 回復(fù)  更多評論   

          2010-03-14 12:33 by 火星漁者
          那個(gè)啟動時(shí)的log4j的對話框能去掉嗎?

          # re: 為java桌面程序制作安裝向?qū)С绦?nbsp; 回復(fù)  更多評論   

          2010-03-15 09:33 by pengo
          @火星漁者
          那個(gè)啟動時(shí)的log4j的對話框能去掉嗎?

          哪里來的log4j對話框,我沒見到有。

          # re: 為java桌面程序制作安裝向?qū)С绦?nbsp; 回復(fù)  更多評論   

          2010-03-17 12:41 by 火星漁者
          @pengo

          對不住,說錯(cuò)了,是exe4j的對話框.(說順嘴了...)
          就是當(dāng)你的程序啟動時(shí)的對話框.
          見這里:http://cid-6d09e453706901fc.skydrive.live.com/self.aspx/.Public/exe4j.jpg

          # re: 為java桌面程序制作安裝向?qū)С绦?nbsp; 回復(fù)  更多評論   

          2010-03-17 22:56 by pengo
          因?yàn)槟愕膃xe4j未注冊,所以才會有這個(gè)對話框.

          # re: 為java桌面程序制作安裝向?qū)С绦?a name="Post">  回復(fù)  更多評論   

          2011-06-22 15:58 by 江南胡楊
          終于找到這篇文章了!謝謝!
          主站蜘蛛池模板: 涞水县| 大名县| 张家港市| 渭南市| 辉南县| 龙州县| 马公市| 湛江市| 天柱县| 香港| 淳安县| 禹城市| 盖州市| 蒲江县| 秦皇岛市| 平顺县| 吴旗县| 中江县| 铜鼓县| 河北省| 新竹县| 福泉市| 嵊泗县| 木里| 鄄城县| 石柱| 灌阳县| 博乐市| 望城县| 偏关县| 余干县| 青河县| 右玉县| 银川市| 余姚市| 崇义县| 新竹市| 金平| 灵台县| 涡阳县| 盘锦市|