将java 打包成exe 可执行文件
在java應(yīng)用開(kāi)發(fā)中,編譯完java?文件生成類(lèi)文件,可以在命令行用java命令運(yùn)行,但是這樣很麻煩,因?yàn)橐话愕膉ava 程序都不是獨(dú)立的應(yīng)用,都會(huì)引用一些其他的jar?包,所以為了每次使用的方便,是好打包成exe或bat 的方式。
以下是一種實(shí)現(xiàn)方式,不需要借助于任何的工具。
一、在eclipse中把需要打包的類(lèi)編譯成class文件
二、在類(lèi)的根文件夾下新建一個(gè)文件MANIFEST.MF、新建一個(gè)文件夾lib,把你所引用的其他jar包拷由到lib中,??
??????????? 其目錄結(jié)構(gòu)如下
?????????????????? +bin
??????????????????????? -----MANIFEST.MF
????????????????????????-----lib
?????????????????????????????+引用的包一
?????????????????????????????+引用的包二?
??????????????????????? -----com(編譯后的類(lèi)目錄)
???????????????????????????? --smartdot
???????????????????????????????? --cip
????????????????????????????????? --類(lèi)一
????????????????????????????????? --類(lèi)二
?
?MANIFEST.MF介紹:包含了JAR文件的內(nèi)容描述,并在運(yùn)行時(shí)向JVM提供應(yīng)用程序的信息,大多數(shù)JAR文件含有一個(gè)默認(rèn)生成的manifest 文件,在這里我們主要利用這個(gè)文件指定運(yùn)行時(shí)的main class,以及main class 運(yùn)行時(shí)需要引用的jar包.
其內(nèi)容為:
Main-Class: com.smartdot.expinitdata.ExportCIPData Class-Path: ./lib/ChineseTransform.jar ./lib/classes12.jar ./lib/commons-lang-2.1.jar ./lib/commons-logging.jar ./lib/j2ee.jar ./lib/ojdbc14.jar Manifest-Version: 1.0?MANIFEST.MF文件經(jīng)常會(huì)出錯(cuò),例如把Class-Path? 放最到后一行,生成的jar文件中的MANIFEST.MF中就沒(méi)有Class-Path,網(wǎng)上很多人問(wèn)這個(gè)問(wèn)題,但是都沒(méi)有找到出問(wèn)題的原因,解決方式是把Class-Path寫(xiě)到Manifest-Version上面就可以了,有時(shí)間去java 英文文檔上找原因吧。
??? 上面的MANIFEST.MF指定的class-path是根據(jù)第二步的文件結(jié)構(gòu)中l(wèi)ib的存放位置指定的,當(dāng)然也可以修改。
?
三、在命令行中執(zhí)行打jar包
???
jar cvfm init.jar MANIFEST.MF com??當(dāng)然,需要把當(dāng)前目錄指到第二步的bin?下,即class文件的根目錄下
???
????剛開(kāi)始我用的是jar cvfm init.jar MANIFEST.MF com/. 這個(gè)命令,生的JAR中的目錄有問(wèn)題,com的下級(jí)目錄名前總帶一個(gè)/.?, 所以總說(shuō)找不到main class,刪掉“/.”就好了。
?
四、編寫(xiě)bat 文件
??? bat 文件很簡(jiǎn)單,只需要3句,將當(dāng)前的路徑指定到編譯后的jar 包所以在目錄,運(yùn)行java
?????
cd e:\patentOfficeData\bin java -jar init.jar pause?
在我的理解中,生成的jar 中應(yīng)該可以雙擊運(yùn)行,而不用再編寫(xiě)bat文件,但是雙擊jar包后,可以啟動(dòng)一個(gè)java 進(jìn)程,但是看不到運(yùn)行的界面,和輸出的語(yǔ)句,是我的理解有誤?
?
五、移植
???? 如果想在其他機(jī)器上運(yùn)行這個(gè)main class , 則需要建立一個(gè)文件夾,里面需要3個(gè)文件
????-----文件夾
??????? +打完的jar文件
??????? +lib目錄(存放引用的jar)
??????? +bat文件
??? 只要拷貝這個(gè)大的文件夾就可以了。
??
??? 有一點(diǎn)要注意,移植時(shí),新機(jī)器的目錄e:\patentOfficeData\bin目錄必須存在,否則會(huì)報(bào)錯(cuò)。所以建議一開(kāi)始打包就找一個(gè)比較簡(jiǎn)單的路徑作為類(lèi)的根路徑。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的将java 打包成exe 可执行文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CSS之expression
- 下一篇: Spring quartz 并发性研究