以前使用過 exe4j 打包應用程序,打包成一個exe文件。
文件很小,但要求必須在裝有jre的電腦上運行。
如果一個電腦上沒有安裝 jre,就必須在打包時附帶一個jre。
這樣一來,不管你寫的程序多麼小,用戶都不得不下載一個200MB左右的 jre。而且 jre還必須放置在exe文件的同級目錄下。
如果再多寫一個程序,代碼50KB,但用戶還得下載200MB的文件。相當麻煩,特別冗餘。
如果客戶希望只下載一個jre,不論jre放在哪,都可以運行你給他打包exe文件,用戶不得不配置環境變量。
這是Java打包成exe的通病,我看了一些教程,對於這方面,似乎沒有很好改進。
本篇博客採用Java8 自帶的javapackager 打包應用程序,雖然打包後的文件大小依然很龐大(相當於一個jre的大小了),但是此種方法比exe4j簡單,方便
首先,同樣的將項目打包成一個 jar包。
然後,打開cmd命令行,進入到存放jar包的路徑。
運行如下命令:
javapackager -deploy -native image -outdir outdir -outfile outfiles -srcfiles I_Love_You.jar -appclass frame.TestMain -name biaobai520
各個參數的解釋:
javapackager 是java8自帶的打包程序
-deploy 表示要打包成exe或者其他平臺的包
-native image 創建原生的鏡像(打成window的exe)
-outdir outdir ,輸出的目錄,後面的具體目錄
–outfile outfilese 輸出的文件,後面是文件名
-srcfiles I_Love_You.jar ,要打包的jar文件,後面是具體文件
–appclass frame.TestMain ,jar的全限定名,就是詳細包名+類名,也就是程序的入口類的全類名
-name Java2exe ,最終給使用者呈現的名字,就是 結果驗證 過程中,雙擊的那個文件名
當然,還有其他的參數,比如 -description 應用的描述、-Bicon 圖標等等。在cmd中,使用 javapackager 可以列舉出所有的參數及其註釋
特別注意
:
以上參數中使用中文是不好使的,親測outdir,outfile ,name 都可以英文自定義,但是不可以使用中文哦。
附上效果圖:
打包後的這個runtime:
它其實就是一個jre:
只不過它比jre小了一丟丟。小了10M左右吧。
雖說整個文件夾大小接近200MB,但是壓縮以後僅僅只有73MB左右: