最近用Java寫(xiě)了一個(gè)小工具,想將它達(dá)成exe執(zhí)行文件,到時(shí)候直接放某個(gè)目錄下,一執(zhí)行就能跑啦。
用到的工具:
附件下載:
1、寫(xiě)好的項(xiàng)目:可以是java項(xiàng)目,也可以是java web項(xiàng)目
2、能夠打jar的工具:我用的MyEclipse開(kāi)發(fā),他們有自帶的工具,我就直接用這個(gè)了
3、exe4j:可以去網(wǎng)上下載,地址:https://exe4j.apponic.com/download/,有綠色版的和安裝的,32位和64位的。我的是別人給的安裝版的,跟官網(wǎng)的最新版可能有些出入,有需要的可以去附件中下載。
4、jre:java項(xiàng)目的運(yùn)行離不開(kāi)jre,也不能要求客戶自己去裝JDK,所以還是給它帶個(gè)比較保險(xiǎn)。(JDK安裝之后,有jdk和jre兩個(gè)目錄,可以直接復(fù)制這個(gè)jre文件夾,也可以復(fù)制jdk文件夾下的jre。我這里用的jdk是1.6的)。
5、一張后綴名為ico的圖標(biāo)文件,作為exe執(zhí)行程序的圖標(biāo)。也可以沒(méi)有。
下面開(kāi)始弄。
一、將項(xiàng)目中的src加壓成jar包:
1、我的目錄結(jié)構(gòu):
2、在項(xiàng)目名稱上右擊(或者在左側(cè)的空白處右擊),選擇"Export",也就是導(dǎo)出文件,在彈出框里面找到“Java---JAR file”,如圖,然后“Next"。
3、去掉除了src以外的其他文件的勾選狀態(tài),只選擇src文件夾,如圖。然后選擇當(dāng)前jar要保存的位置。最后的三個(gè)Options默認(rèn)的第一個(gè)是勾選的,后面的兩個(gè)是不勾選的。咱們這兒一并勾上吧,無(wú)非就是要是選的文件夾不存在就新建文件夾,要是在已經(jīng)存在就直接覆蓋。要是不勾選檢測(cè)到指定目錄下有指定文件時(shí)會(huì)彈出框問(wèn)你是否覆蓋。上面三點(diǎn)弄完之后,點(diǎn)擊“Next”。
4、使用默認(rèn)設(shè)置,點(diǎn)擊“Next”。
5、往后的步驟,一路默認(rèn)一路Next就成。期間可能會(huì)遇到一個(gè)問(wèn)題,如下圖。這是兩個(gè)warnings。無(wú)關(guān)痛癢,可以不用去管它。你要是覺(jué)得不舒服不想要有的話,查網(wǎng)上的資料,說(shuō)將第四部的兩個(gè)勾都給去掉就不會(huì)有這個(gè)警告了。(我試了試,的確沒(méi)有警告了,但是在后面生成exe執(zhí)行程序之后,卻報(bào)錯(cuò)說(shuō)被警告的兩個(gè)文件找不到了。細(xì)看那兩個(gè)勾選的內(nèi)容,一個(gè)是說(shuō)錯(cuò)誤一個(gè)是說(shuō)警告,跟我的這個(gè)找不到文件半毛錢關(guān)系都沒(méi)有,所以可能是碰巧碰到錯(cuò)了。)
6、至此,選定的目錄下應(yīng)該就有導(dǎo)出的jar包了。
二、組織目錄結(jié)構(gòu):
將java項(xiàng)目里面的其他文件夾(我這里是lib和log兩個(gè)文件夾)復(fù)制到剛剛導(dǎo)出的jar所在目錄,并將導(dǎo)出的jar包放到lib目錄里面。再新建一個(gè)image或別的名稱的文件夾用來(lái)存在exe生成后的圖標(biāo)(也可以直接放在根目錄下面,我是放在image標(biāo)簽下),最后將jre文件夾拷貝至此。我的目錄如下:
三、使用exe4j工具生成exe執(zhí)行程序:
1、安裝完成exe4j工具之后,雙擊會(huì)打開(kāi)welcome界面,這個(gè)界面是用來(lái)輸注冊(cè)碼用的,你要是不輸,可以直接next。但若是不輸入,雙擊生成的exe時(shí),會(huì)alert出一段話,如圖。必須點(diǎn)“確定”才可以執(zhí)行程序。
為了不讓這個(gè)問(wèn)題成為“客戶反饋的問(wèn)題”,咱們還是輸入注冊(cè)碼吧。點(diǎn)擊"Enter license"按鈕,輸入Name、Company、和License Key。前面兩個(gè)可以隨便輸,key可以試試下面的。
License Key:
A-XVK258563F-1p4lv7mg7sav
A-XVK209982F-1y0i3h4ywx2h1
A-XVK267351F-dpurrhnyarva
A-XVK204432F-1kkoilo1jy2h3r
A-XVK246130F-1l7msieqiwqnq
A-XVK249554F-pllh351kcke50
A-XVK238729F-25yn13iea25i
A-XVK222711F-134h5ta8yxbm0
2、Lisence輸入完成了點(diǎn)擊“OK”回到welcom界面,點(diǎn)擊“Next”,在“Choose project type”里面選在“JAR in EXE mode",也就是用jar包來(lái)生成exe。Next。
3、目錄配置,也就是將哪個(gè)文件夾下面的東西打成exe。常規(guī)里面填個(gè)應(yīng)用的簡(jiǎn)寫(xiě)名稱,Direcotries里面選擇需要生成exe的目錄,也就是上面組織的目錄結(jié)構(gòu)。如圖。最后Next。
4、exe執(zhí)行程序配置。
Executable name:就是exe執(zhí)行文件的名稱
Icon File:exe執(zhí)行文件的圖標(biāo)。這里選擇image下面的ico文件。這里只能用ico文件作為圖標(biāo)。也可以取消前面的復(fù)選框不給當(dāng)前exe設(shè)置圖標(biāo),若是不設(shè)置系統(tǒng)會(huì)根據(jù)系統(tǒng)主題自動(dòng)設(shè)置一個(gè)圖標(biāo)。
Allow only a single ......:在一臺(tái)電腦上只允許運(yùn)行一個(gè)exe程序,若是允許多個(gè),可以不勾選
最后點(diǎn)擊”Next“。
5、 invocation配置。也就是添加jar文件和指定主方法。點(diǎn)擊綠色的”+“號(hào),在彈出框里選擇lib中的jar包(如圖2),然后”O(jiān)K“。這個(gè)只能一個(gè)一個(gè)的添加,要是用的jar包比較多加起來(lái)還挺麻煩的。
lib中的jar都添加完了之后,指定main方法,點(diǎn)擊”main class“后面的按鈕,在彈出框里面找到程序的主方法,如圖,添加進(jìn)去。
這兩步都OK之后,最后的結(jié)果是:
有時(shí)候系統(tǒng)中除了用到j(luò)ar包之外,還會(huì)用到dll文件,而上面的添加jar包的步驟中不能添加dll文件,將dll文件放在與exe同級(jí)目錄下也一樣會(huì)因?yàn)閐ll的問(wèn)題導(dǎo)致系統(tǒng)出錯(cuò),甚至于放到system32文件夾下也沒(méi)用。我在弄這個(gè)系統(tǒng)的時(shí)候,就有dll文件,折騰了大半天,也找了好久的資料(找的過(guò)程中發(fā)現(xiàn)好多人在這一步也很苦惱),后來(lái)發(fā)現(xiàn),其實(shí)exe4j早就考慮到這個(gè)問(wèn)題了,就是上圖中的Advanced Options,即:
可以通過(guò)這個(gè)添加任何非dll的文件所在的文件夾,操作很簡(jiǎn)單,點(diǎn)擊之后彈出如下圖的對(duì)話框,點(diǎn)擊綠色“+”號(hào), 選擇dll文件所在目錄,我這里是放在lib目錄下的,所以選擇lib,添加完之后,結(jié)果如下:
6、 配置jre。配置jre的最小版本,即低于這個(gè)版本的Jre無(wú)法運(yùn)行該程序。最大版本也是一樣的。我用的jdk是1.6的,所以配置最小為1.6。最大的可以不設(shè)置。
接著點(diǎn)擊“Advanced Options”-“Search sequence”,設(shè)置一下我們的JRE,因?yàn)榭蛻舻臋C(jī)器上未必有jre所以咱們自己帶一個(gè)比較好。在彈出的框里面點(diǎn)擊綠色的”+“號(hào),在Define search sequence entry中選擇Direcotry,并給定jre所在目錄。然后”O(jiān)K“。
jre添加完成之后效果如下:
7、完后的三步都是用默認(rèn)操作,一路Next即可。直到如下界面:
到這個(gè)界面說(shuō)明已經(jīng)生成完成了。 還需要說(shuō)的有三點(diǎn):
1、Click here to Start the Application:這個(gè)按鈕時(shí)用來(lái)測(cè)試執(zhí)行程序的,點(diǎn)擊該按鈕即可啟動(dòng)exe執(zhí)行程序。
2、Save As:這個(gè)很重要。這個(gè)保存了以上運(yùn)行步驟的過(guò)程,保存后會(huì)生成一個(gè)exe4j,以后如果需要將該程序重新打exe,直接運(yùn)行這個(gè)exe4j文件即可,以后的各種配置都被存入這個(gè)文件了,基本上一路next就成,特別好用。
3、Restart:這個(gè)restart有點(diǎn)誤導(dǎo)人。Restart是重啟的意思,在這的話更容易理解成重新生成。我開(kāi)始弄的時(shí)候弄錯(cuò)了,想重新生成一下,于是點(diǎn)了這個(gè),結(jié)果直接給我跳到第一步重新來(lái)了。所幸各種設(shè)置都還在,要是給我清空我不得重來(lái)一回。
8、最后的結(jié)果應(yīng)該這個(gè)樣子的:
說(shuō)明:上面的截圖中有設(shè)置exe的圖標(biāo),為了測(cè)試我不設(shè)置圖標(biāo)會(huì)出現(xiàn)什么效果,我這里沒(méi)有添加圖標(biāo)。其他的跟截圖都是一樣的。
本文為張軍原創(chuàng)文章,轉(zhuǎn)載無(wú)需和我聯(lián)系,但請(qǐng)注明來(lái)自張軍的軍軍小站,個(gè)人博客http://m.eyofj.com
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
