教你打包Java程序,jar轉exe隨處可跑

  本文出自One Coder博客,轉載請務必註明出處:http://www.coderli.com/archives/runnablejar-to-exe/java

發現不少人問如何把Jar轉成exe程序。多是想雙擊運行和隨處運行。其實這個並不難,我就簡單總結幾種方法,供你們參考,關鍵仍是要知其因此然。 小程序

 
Java程序的運行不可能脫離JRE,無論你是Jar包仍是exe程序。這點你必須瞭解。那麼在沒有JRE的機器上你的程序怎麼跑?很簡單,在你程序裏帶一份JRE就好了。
 
先介紹集中打包的方法:
 
Eclipse:

最簡單直接的方法,選擇你想打包的程序,右鍵export...

 

選擇Runnable Jar file。(便可執行的Jar包)api

 

選擇你程序的主類,就是還有Main函數的類。點Finish便可。
 
在你的機器上,設置好Jar文件的打開方式(別默認用解壓縮的工具打開就行),雙擊便可運行。

 

這個跟在命令行執行:
 
java -jar forfun.jar的效果是同樣的。
 
其實一個Jar能運行,關鍵仍是配置Jar內部的MANIFEST.MF文件。該文件存在於Jar包根目錄的META-INF文件夾內。主要因爲指定主類(Main)的位置:
 
Manifest-Version: 1.0
Main-Class: one.coder.jdk.JDKMain
 
版本能夠本身指定,默認生成是1.0。主類位置須要指定。注意, Main-Class的冒號後,要跟一個空格。
若是你還有要依賴的Jar包,則能夠配置Class-Path來指定。
 
Class-Path: ./ logback-core-0.9.29.jar junit-4.9.jar slf4j-api-1.
 6.1.jar logback-classic-0.9.29.jar hamcrest-core-1.1.jar
 
打開剛纔生成的Jar文件,你可能發現多了一些Eclipse的東西,而且主類變成了
 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
 
也就是經過Eclipse提供的這個主類來加載的你程序。若是你不喜歡這樣,將其去掉。本身進行配置。筆者經過一個不依賴任何Jar包的小程序進行說明。

這是筆者打出Jar的內部截圖,去掉全部跟個人程序不相關的東西。MANIFEST.MF的配置也很簡單。
 
Manifest-Version: 1.0
Main-Class: one.coder.jdk.JDKMain
 
在有JRE的機器上,雙擊同樣能夠運行。
 
注:這裏須要提一下,儘可能不用用解壓軟件自帶的編輯器進行編輯,若是你編輯後發現不能運行,提示打開jar錯誤等信息,極可能是因爲你編輯的MANIFEST.MF文件的編碼錯誤。致使沒法解析。默認是採用ANSI編碼格式的。不要改爲UTF-8等。筆者被這個問題,困擾了近半個小時。
 
接下來講說在沒有JRE的機器上怎麼辦?
 
最簡單的手動的辦法就是寫一個bat腳本。而且帶一份jre在你的程序裏。

把圖中的三個文件,放入同一個文件夾中。
start.bat內容以下:
 
.\jre7\bin\java -jar .\run.jar
 
說白了就彷佛調用jre中的java命令,執行指定的jar程序。 雙擊start.bat,執行成功。
 
若是你非要打成exe程序,筆者推薦一個工具JSmooth。簡單好用。一樣這也確定是須要JRE指定的。
關於JSmooth的教程,筆者找到了一個不錯的教學貼: http://yisufuyou.iteye.com/blog/403556
 
按照裏面的步驟,你必定能夠成功。

說了這麼多,若是還有什麼不明白的,能夠給我留言,一塊兒討論研究。
 
PS1:默認的JRE體積實在太大,你能夠考慮精簡JRE還節約空間,這部份內容,不在本文討論。另外,若是你想把你的軟件作成安裝包的形勢,可考慮InstallAnyWhere(http://www.flexerasoftware.com/products/installanywhere.htm)這個工具,會有
 
PS2:筆者研究的過程當中,爲了模擬沒有JRE的環境,真是百般折騰,由於筆者把全部環境變量都刪掉,還有能夠運行。不知道是否是從JDK7開始,Java竟然在個人System32路徑下,也放置Java.exe等程序,也就是說,不用配置Path了。jre路徑的指定,貌似也寫入了註冊表,不過這點,筆者沒有親自證明,只是在註冊表中簡單的搜索了一下,僅發現了JavaFX的配置和一些其餘的Java配置,沒有深刻研究,很差定論。有興趣能夠研究下,也麻煩告訴我一聲。
 
本文出自One Coder博客, 轉載請務必註明出處: http://www.coderli.com/archives/runnablejar-to-exe/
相關文章
相關標籤/搜索