如何制作Java可執(zhí)行程序以及安裝程序http://www.diybl.com/ 2008-11-6 網(wǎng)絡 點擊:714 [ 評論 ]
文章搜索: 【點擊打包該文章】 被過濾廣告
【本站開通在線QQ討論群】
首先我們介紹一下生成 運行Java程序的三種方式-----
Java 生成的jar包執(zhí)行方式一般有三種:
1直接用系統(tǒng)j2se binnary執(zhí)行。由于jar包也可以用winrar打開,造成沖突,你可以將文件關聯(lián)設置一下即可。這樣的話jar包和.exe文件并無二致。而且不損失其平臺型。
2 編寫腳本。在windows下為.bat ,在linux 或者unix下為.sh。其實個人感覺這個更簡單。而且很多大程序也是用這種方式運作的。比如tomcat 以及weblogic都是以這種腳本的方式啟動。好處是可以設置各種系統(tǒng)環(huán)境變量,檢測運行的環(huán)境,改變啟動參數(shù)等等。比如在windows下我們只要加一句:start java –jar xxx.jar就可以了。
3 利用各種各種第三方工具將jar包制作成.bin(unix),或者.exe(windows)文件。但這是以失去跨平臺特性為條件的。當然好處是帶來了更好的用戶體驗。
第一種只要你安裝了j2se就可以
第二種 我們可以舉個例子
假設有個allwefantasy.jar的jar包(里面含有manifest文件),于是在相同目錄下我建一個allwefantasy.bat(名字可以隨意定,如果是在linux下平臺就改成sh后綴名)。內(nèi)容為
start java –jar xxx.jar
。以后雙擊就可運行。
第三種是我這篇文章的重點。
將 jar包包裝成exe可執(zhí)行文件
其實這種方式在JDK里面就在應用了。不知道你有沒有注意到,%JAVA_HOME%\bin里面全是.exe文件,但仔細看看這些文件都只有幾個kb而已,這是為什么呢,因為這只是一種wrapper.包裝,真正在運行的仍然是jar文件。也可以稱作偽exe文件。那么,如何將jar文件制作成可以直接運行的exe文件呢?這里我介紹兩款我用過的。NativeJ 以及開源的jsmooth.
我個人比較喜歡用開源的,呵呵那先來介紹一下Jsmooth吧。
圖片(2)
使用很簡單,在Skeleton選項卡中的第一個下拉框中windowsed wrapper.
圖片(4)
接著選擇Executable選項卡,第一個空是你要生成的exe文件是叫什么,你自己隨意定。第二個空的你想給自己的exe文件弄個什么圖標,你可以實現(xiàn)做好一個ico圖形文件然后使用。
第三個空就是你jar包所在目錄。
圖片(6)
在Application選顯卡中第一個空粘帖你的 main-class 的全路徑。不知道我說清楚了沒,也就是你主函數(shù)所在目錄的包名+主函數(shù)名字。比如我要講的例子中drawsmart.itsv.AppMain。
然后再勾選use an embedded.jar.
最后選擇你所需要的jar包就可以了。
最后點擊編譯按鈕就好了。Project –compile—
接著介紹nativeJ,顧名思義,nativej就是本地化java的意思。
這個軟件需要購買,不然啟動的時候會彈出可惡的框框,跟可惡的是生成的exe。文件在執(zhí)行的時候還會彈出申明這個程序是由它生成的。。
呵呵 抱怨的話不多講,做軟件的人也不容易。
圖片(8)
一開始用的時候也覺得莫名其妙,不得要領,后來琢磨了一下,才鬧明白。你事先建立一個目錄里面,并且在目錄里面建一個空的后綴名為njp文本文件。
然后點擊new project wizard,
圖片(10)
選擇剛才建好的工程文件就可以了。接著就是依次填入一些參數(shù)。參數(shù)跟Jsmooth差不多,主要有兩個,主類的全路徑(包名+類名)以及jar包。
最后就能生成我們期待的exe文件了。
圖片(12)
這是我生成的文件。
需要注意的是Jsmooth 和nativeJ生成的exe文件還是有所不同的。我不知道設置會不會改變這種不同。
nativeJ中,如上圖所示,由于jar并沒有將所有的文件都打入包中,比如images.所以生成的exe文件依然是以來jar包以及其他文件的。個人感覺有點像bat文件。
而在jsmooth中,生成了一個exe文件,但是文件卻很大,似乎包含了整個jar包以及資源文件,可是卻不能單獨執(zhí)行(為什么,我也沒弄明白)。
圖片(14)
如何為java程序制作安裝程序
制作安裝程序并不是一項簡單的工作。特別對于大型程序來說。你看oracle光安裝就的花你半個小時。安裝制作程序有很多,大型商業(yè)類的有intallAnyWhere 以及installShield .功能超級強大,但畢竟是商業(yè)軟件,是需要花銀子的。此外,因為功能強,學習他的曲線也是比較陡峭的。
這里我還是介紹一個開源的軟件。IzPack。你可以到官網(wǎng)去下。
在安裝的時候你可以看到他用自己做的安裝界面。
圖片(16)
安裝后必須自己找到他的目錄。這里有兩點大家可能不習慣,第一,他沒有圖形界面,第二,他在你給他寫好他所需要的install.xml文件時候,是無法運行的。
也許你還不太理解。沒關系,我們講講他的設計理念。
安裝程序無非就幾個界面板塊,語言選擇,如上面的第一副圖片,許可申明,如第二副圖,安裝進程,安裝結(jié)束界面等。在IzPack中這些叫面板。IzPack就是利用install.xml文件配置這些面板。當然他還有很多內(nèi)部細節(jié),比如注冊表的注冊等,當然這是另外一回事了。然后生成一個jar包(又是jar包,為什么不直接生成exe文件呢,呵呵這個我也不知道,你得去問設計的人,呵呵PS:其實還是為了跨平臺)。
那么如何寫install,xml 文檔呢,說明書有一百五十多業(yè),還是自己慢慢看。不過我可以拿一個自己做的范例來看看。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<installation version="1.0">
//info 主要是一些版本 作者信息
<info>
<appname>我的畫畫本</appname>
<appversion>1.4 beta </appversion>
<authors>
<author name="GuanSheng" email="wgs@superman.org"/>
<author name="HailLIN" email="zhl@hisdomain.com"/>
</authors>
<url>http://www.superman.net/</url>
</info>
//guiprefs主要設置安裝界面的大小,以及是否可以改變尺寸
<guiprefs width="640" height="480" resizable="no"/>
//這里很java里面的國際化很像,我沒數(shù)過,但IzPack支持很多國家的語言,我這里面選了 英文以及中文。注意,他的語言的縮寫和java里面不一致,你要參考文檔
<locale>
<langpack iso3="eng"/>
<langpack iso3="chn"/>
</locale>
//資源文件愛你,我這里放了許可申明以及閱readme文件
<resources>
<res id="LicencePanel.licence" src="Licence.txt"/>
<res id="InfoPanel.info" src="Readme.txt"/>
</resources>
//這個就是各個板塊了 比如開始,安裝,申明板塊都在這定義了
<panels>
<panel classname="HelloPanel"/>
<panel classname="InfoPanel"/>
<panel classname="LicencePanel"/>
<panel classname="TargetPanel"/>
<panel classname="PacksPanel"/>
<panel classname="InstallPanel"/>
<panel classname="FinishPanel"/>
</panels>
<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<file src="Readme.txt" targetdir="$INSTALL_PATH"/>
<file src="Licence.txt" targetdir="$INSTALL_PATH"/>
<file src="kitty.exe" targetdir="$INSTALL_PATH"/>
<parsable targetfile="$INSTALL_PATH/kitty.exe"/>
//文件復制到安裝文件夾里面就靠這個了
</pack>
<pack name="image" required="yes">
<description>The documentation</description>
<file src="images" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="xmlfile" required="yes">
<description>The sources</description>
<file src="xmlfile" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="temp" required="yes">
<description>The sources</description>
<file src="temp" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="drawflow" required="yes">
<description>The sources</description>
<file src="drawflow3_0.jar" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="service" required="yes">
<description>The sources</description>
<file src="service.ico" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="addon" required="yes">
<description>The sources</description>
<file src="add-on" targetdir="$INSTALL_PATH"/>
</pack>
</packs>
</installation>
寫好這個文件后將它放在你要制作成安裝文件的主目錄下,然后用compile.bat運行它,就能得到一個jar文件(PS:注意,在cmd 中一定要在install所在目錄執(zhí)行install不然會提示找不到各個文件,我就被他卡在這很多時間)
那么生成一個jar文件有什么用呢,呵呵,別急
看最后一步
將jar包的安裝程序轉(zhuǎn)換成exe安裝程序
實際上到這一步,就是用jsmooth將jar安裝程序wrapper成exe.那么最后就大功告成了。
所以用了三個步驟。Jar 程序--jsmooth---exe程序----IzPack---jar安裝程序---jsmooth—exe安裝程序。
當然如果你想更專業(yè)點,可以用installsheild或者intallanywhere。簡單說說這兩個軟件,圖形界面,可操作性相當?shù)暮谩6覍τ趯W習用來說,他不需要注冊碼。唯一的缺點是,如果你不注冊,你制作的安裝程序在安裝的時候就會彈出該產(chǎn)品未注冊的提示框。
我也是在網(wǎng)上看到很多網(wǎng)友問著一方面的問題卻往往得不到好的解答。所以在此總結(jié)一下。希望和大家多多交流。
文章出處:http://www.diybl.com/course/3_program/java/javajs/20081013/150469.html