熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java程序打成Jar包全過程

2013-11-23 18:41:09  來源: Java核心技術 

  Java程序完成以後對於Windows操作系統習慣總是想雙擊某個exe文件就可以直接運行程序現我將一步一步的實現該過程最終結果是:不用安裝JRE環境不用安裝數據庫直接雙擊一個exe文件就可以運行程序

  下面我將以我最近寫的一個程序作例子進行該打包過程

  該程序是使用了:HibernateSpringDerby的Java GUI(JDK需要版本因該版本才有Derby)我使用的是Eclipse進行開發

  第一步:完成Java GUI程序

  在Eclipse下程序能夠正常運行

  第二步:准備清單文件(MANIFESTMF)

  方法:直接拷貝其它能運行的JAR文件中的MANIFESTMF進行修改

  方法:利用IDE工具如Eclipse在生成JAR文件時自動生成

  MANIFESTMF內容如下:

  ManifestVersion:

  MainClass: manageruiMainFrame

  ClassPath: /lib/springjar /lib/hibernatejar /lib/derbyjar

  SplashScreenImager: manager/resources/images/splashjpg

  說明:

  ManifestVersion - 指定清單文件的版本號

  MainClass -指定程序運行的入口類注意類名後不要加class擴展名

  ClassPath -指定支持庫的路徑指程序運行目錄即導出的JAR包所在目錄程序運行時依據ClassPath項的設置路徑來查找支持庫每一個支持庫之間用空格隔開在這裡使用了hibernatespringderby

  注意:

  如果Java應用程序用到了一些Eclipse包那麼就必須將這些包也復制到程序運行目錄設置到ClassPath否則程序將無法運行引用了一些外部組件也需要如此設置如hibernatespringderby

   除了入口類的包名和類名之外其他設置項都不分大小寫比如ClassPath寫成classpath或CLASSPATH也可以swtjar寫成SWTJAR也行

  類名後不要加class擴展名

  每一行的:後都有一個空格如ClassPath:<空格>/lib/springjar

  ClassPath中引入的JAR文件每行不得超過否則會報錯但在讓人意外的是每行只有前個有效故將所有同類型的JAR文件做成一個JAR文件如我這裡的springjarhibernatejarderbyjar都是同類JAR文件的組合

  第三步:修改spring配置文件

  在spring的 sessionFactory bean的配置中則要這樣寫(與程序中ClassPathXmlApplicationContext對應)

  <property name=mappingLocations>

  <list>

  <value>manager/entity/MyFilehbmxml</value>

  <value>manager/entity/FileTypehbmxml</value>

  

  </list>

  </property>

  第四步:使用Eclipse生成JAR文件

  右鍵單擊項目名在彈出菜單中選擇Export在彈出的如下圖所示的對話框中選擇JAR文件單擊Next

  Java程序打成Jar包全過程

  將右邊不需要的文件都取消勾選選擇導出目標(Select the export destination)項文本框中設置JAR包的輸出路徑和包名(可以任意取名)為D:\manager\managerjar接受其他的默認設置不變單擊Next

  Java程序打成Jar包全過程

  附注左邊雖然選擇了src目錄但源文件並不會導出到包中除非勾選了導出Java源代碼文件和資源(Export java source files and resources)

  接受默認設置不變單擊Next

  這一步較關鍵如下圖所示選擇從工作空間中使用現有清單將創建的清單文件輸入也可以通過旁邊的浏覽按鈕來選擇清單文件輸入清單文件後單擊FinishEclipse開始將項目打包

  Java程序打成Jar包全過程

  附:這裡也可以選擇Generate the manifest file但生成的清單文件MAINFESTMF需要修改

  注意:清單文件MAINFESTMF一定要按第二步那樣設置

  生成的JAR文件目錄如下:

  Java程序打成Jar包全過程

  第五步:生成運行managerjar的批處理文件managerbat(該步可以不要)

  在manager目錄下創建一個批處理程序managerbat(名字任取擴展名必須是bat)其內容僅一句語句如下

  javaw jar managerjar

  說明

  javaw對應c:\jdk\jre\bin\javawexe文件如果windows提示命令未發現則需要將c:\jdk\jre\bin路徑加入到windows環境變量path中

  在運行程序的時候有一個討厭的黑色命令行窗口要去掉它可以將runbat內容更改如下start javaw jar managerjarstart是指調用了windows的運行命令

  在後邊加一個pause就可以讓你看到具體哪裡出錯了如:

  start javaw jar managerjar

  pause

  雙擊managerbat就可以運行該JAR文件了

  第六步:讓電腦不必安裝JRE環境也能運行

  通常運行Java程序有個前提條件用戶電腦必須先安裝JRE環境雖然安裝JRE環境非常簡單但畢竟多了一步算是有一點點的瑕疵這裡給出一個不必讓用戶安裝JRE環境的方法其實現步驟如下

  ()將原JDK中的jre目錄復制到D:\manager\java目錄下(java也可換成其他名稱)

  ()將JDK和JRE從本機卸載掉這樣表示本機沒有安裝JAVA運行環境

  ()修改批處理文件managerbat中的命令為start java\jre\bin\javaw jar managerjar僅僅是在javaw前加上了一個相對應路徑

  雙擊managerbat即可在不安裝JRE環境的電腦運行此Java應用程序

  第七步:拋棄批處理文件(*bat)生成exe文件

  用批處理文件運行程序似乎不夠專業雖然它足以完成運行任務但習慣就象一種毒藥一旦染上就很難擺脫它的影響Windows統治下的人們早已經習慣運行擴展名是EXE的程序用*bat他們就會感覺別扭

  我們可以用一個叫JavaLauncher的免費小程序來代替批處理文件去運行Java程序JavaLauncher的下載網址是

  

  下載下來的文件是一個名JavaLauncherzip的壓縮包解壓後的目錄結構如下所示

  JavaLauncherzip目錄結構

  source        目錄包含了JavaLauncher的源程序是用C語言寫的

  changestxt   是新版的修改說明

  launchexe    是主程序

  launchercfg  是配置文件

  readmetxt    是一些說明和示例

  我們只需要launchexelaunchercfg兩個文件將這兩個文件復制到打包文件所在的目錄launchercfg是一個僅三行內容的文本文件將它修改如下

  

  \java\jre\bin\javawexe

  jar managerjar

  第一行設置指向JAR包managgerjar的目錄由於launchexe和myswtjar同在一個目錄所以用即當前目錄

  第二行設置指向jre\bin\javawexe的路徑在上面已將jre目錄復制到了java子目錄中

  配置好launchercfg後雙擊launchexe即可運行java應用程序

  如果仔佃研究eclipse的啟動方式發現eclipse和JavaLauncher的原理一樣eclipseexe相當於launchexestartupjar相當於managerjar只不過eclipseexe不象launchexe要具有通用性所以它沒有*cfg這樣的配置文件而是將啟動信息固化在eclipseexe中

  第八步:美化圖標

  launchexe文件的圖標太單調了讓我們給它換個好看點的換程序的圖標需要用到一個免費的軟件Resource Hacker

  第九步:最後的打包

  發送給用戶之前通常要用WinZip或WinRAR將所有的文件全部打成一個壓縮包然後用戶得到這個壓縮包後將其解壓縮後即可運行程序Eclipse軟件就是這種方式

  另一種方式是用InstallShieldInstallAnyWhere這樣的安裝程序制作軟件來創建一個單一的setupexe文件它具有向導式的安裝界面而且還可以往windows的程序欄插入菜單項關於這些安裝程序制作軟件的具體使用請參閱相關書籍


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25574.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.