Feeling

              三人行,必有我師焉

             ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
            185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks
          Java應用定制工廠(以下簡稱為JCB,Java Customization Builder)是一個針對Java輕量級桌面應用進行精簡優化的小工具,使用它可以精簡你的jar包,并自動生成一個精簡的JRE,也可以使用它生成一個Exe啟動引導程序,并且能夠對你的Java應用自動做Pack200和Unpack200處理。使用本工具定制的Java桌面應用通常不會超過10M(包含JRE),SWT客戶端程序相對于Swing客戶端程序更小,一般不會超過5M。

          JCB是一個Java應用,所以目標機器上必須安裝1.5以上版本的JDK用以啟動JCB,但是JCB可以用來精簡1.4版的JRE,并且JRE1.4精簡后的體積遠小于1.5以上的版本。

          1.新建JCB項目
          精簡JRE的步驟比較繁瑣,有可能精簡失敗,為了不重復之前的步驟,JCB提供一個項目文件用來保存精簡配置信息,擴展名為jcprj。這里我們創建一個項目,名為JCB


          Wizard需要輸入一個工程名和指定工程位置,至于下面的應用程序位置和定制JRE位置由JCB自動指定,這兒顯示出來僅供參考。

          此時最好Ctrl+S保存一下項目,否則退出后你之前的配置信息會全部丟失,因為你并沒有制定一個可用的項目配置文件。

          2. 配置JCB項目


          首先指定項目需要的jar文件,然后依次選擇項目的main class,啟動路徑默認為空,一般來說無需指定。然后設定應用程序參數和虛擬機參數。最后選定需要精簡的JRE,JCB當前支持1.4-1.7版本的JRE,未來可能會支持更高版本的JRE。

          右下角有2個單選按鈕:全部重新運行和增量運行。全部重新運行就會放棄之前的運行結果,增量運行就是會保留以前的運行結果。

          然后點擊“以Verbose模式運行”按鈕。Verbose模式運行Java程序,會顯示JVM加載的全部類信息,JCB需要這些類信息進行JRE的精簡,所以請盡可能的把應用所有的功能盡可能的跑一遍,跑的越全面,導致精簡出錯的可能性就越低。



          Verbose運行結果,這個頁面的顯示信息僅供參考,無實際用處。

          3. 分析項目的類依賴項


          分析類依賴模式有2個選項:重新完全分析和增量分析。完全分析會花費較多的時間。當使用verbose模式增量運行后,可以使用增量模式分析類依賴項,這樣可以節約大量的時間。類依賴分析會反編譯所有運行的類,分析類引用關系,但是無法獲取Class.forName這類動態類加載信息,所以需要Verbose模式運行的盡量全面,以避免這些動態加載的類的缺失。

          為什么需要分析類依賴關系呢?因為不同的操作系統,不同的硬件配置,JRE可能會采取策略模式加載不同的類,或者一些異常,Verbose模式一般不會加載,這樣換個硬件環境,僅僅使用Verbose模式的類可能會導致ClassNotFound這樣的異常,導致Java程序崩潰。


          4. 精簡JRE


          精簡JRE有兩種模式:使用Verbose運行結果和使用類依賴分析結果。前者只包含Verbose分析出來的類,精簡出來的JRE包很小,但是基本不具備跨平臺性。所以一般來說推薦選擇后者。

          如果你的程序包含Swing的客戶端,并且比較復雜的話,最好選中包含Swing選項。因為Swing的設計完全是動態化的加載,全部使用Class.forName方式,類依賴分析對Swing是無效的。當然選中該選項后,JRE的體積會增加許多。比較好的解決方案,是使用SWT替代Swing進行開發,或者盡量把你的程序跑全面,包括各種異常界面都跑出來。

          右下角有兩個按鈕,是用來自定義類和資源文件的,比如移除JAR包的MD5文件或者無用的文件。或者測試運行發現ClassNotFound異常,手動把缺少的類加進去,然后JCB會自動運行增量類依賴分析加載所有可能需要的類。

          選擇左上角的“精簡Jar包”按鈕,就可以對JRE進行精簡了,精簡完畢后可以點擊“查看精簡結果”按鈕進行查看。

          5.定制JRE


          上圖顯示了JRE精簡結果,JCB會自動分析所有的Class,生成精簡版JRE,包括需要的JAR,DLL和資源文件。一般來說精簡出來的JRE,普通功能都能正確完成,但是不排除有些功能不能正常使用,比如缺少某個資源文件或者DLL,需要手工添加。

          為了保證精簡的正確性,你需要進行運行測試,這一步是必須的,而且最好和Verbose運行模式一樣,把所有的功能都跑一遍,確認精簡無誤。



          如果測試運行有誤的話,請根據運行錯誤報告進行分析,如果缺少類,請使用Verbose模式重新運行相應的功能,或者在步驟四手工添加需要的類,然后重新生成依賴的JRE。如果缺少相關的DLL或者資源文件,也請手工添加,并且取消步驟四的“清理工作區選項”,否則每次精簡JRE都需要重新手工添加。

          到此為止,精簡JRE部分就算全部完成了,你最好使用Ctrl+S保存一下結果,以避免下次重做項目。

          JCB項目下載地址:http://www.sourceforge.net/projects/jcb
          posted on 2013-03-03 17:25 三人行,必有我師焉 閱讀(5227) 評論(13)  編輯  收藏

          評論

          # re: Java應用定制工廠使用手冊(一) 2013-03-03 17:44 CYB
          先頂再看~~  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一)[未登錄] 2013-03-04 13:11 zhou
          頂上。、。、。、。、、。、。、  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一)[未登錄] 2013-03-04 13:17 Eric
          很好很強大啊~~~~
            回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一)[未登錄] 2013-03-08 17:05 test
          這種方式存在很多風險,試用過一次.放棄了!  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2013-03-14 17:23 oop
          精簡JRE時報錯了。
          ava.lang.NullPointerException: entry
          at java.util.zip.ZipFile.getInputStream(ZipFile.java:340)
          at java.util.jar.JarFile.getInputStream(JarFile.java:409)
          at net.sf.feeling.java.customization.engine.SingleJarPacker.copyData(SingleJarPacker.java:141)
          at net.sf.feeling.java.customization.ui.JarSlimPage$19.run(JarSlimPage.java:1222)
          at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

            回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2013-04-08 14:30 lpdx111
          精簡的jre ,無法用 cmd java -jar 運行。  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2013-04-09 11:01 三人行,必有我師焉
          @lpdx111

          manifest.mf 的信息丟失,這應當是個bug, Thanks.
            回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2013-08-18 16:29 haicom
          博主,請問一下那個應用程序參數和虛擬機參數怎么填的?  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一)[未登錄] 2014-03-25 10:36 joker
          @oop
          遇到跟你一樣的問題了  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2015-03-15 16:56 Kissimon
          求教,我是無法運行JCB,,提示說找不到java運行環境,但是我的JDK都是正常安裝和正確配置了的。,有人遇到這種情況嗎?  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2015-03-22 17:18 陳華
          @Kissimon
          我試過,,前天就是這樣,今天重裝了系統再裝JDK就好了。但是還是不太懂怎樣用這個軟件。加個QQ一起學習,,86967672.。。有使用過的朋友,也希望加QQ指點小弟。。  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一)[未登錄] 2015-07-23 09:38 leo
          @Kissimon
          你的JDK是x64的吧,這個JCB只能在x32的JRE上運行.  回復  更多評論
            

          # re: Java應用定制工廠使用手冊(一) 2016-03-12 16:06 Mr.sun
          @oop

          請問問題解決了嗎,我的也出現了同樣的問題  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 义马市| 镇远县| 长武县| 晋州市| 榕江县| 伊春市| 兴业县| 安福县| 天津市| 虹口区| 桓台县| 鲁山县| 连南| 司法| 乌海市| 临夏市| 杭锦后旗| 马鞍山市| 明光市| 辽阳县| 颍上县| 正蓝旗| 砚山县| 冷水江市| 德安县| 阿克| 永善县| 泰和县| 大埔区| 南召县| 康马县| 富锦市| 汕尾市| 海门市| 罗江县| 舟曲县| 金塔县| 抚州市| 武陟县| 鹤壁市| 禹城市|