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