可執行jar打包成exe文件,最常見的大概就是exe4j了吧。不過,現在都2020年了,這裏介紹一下,使用 java8提供的 javapackager 的方式來實現。
預備工作
首先,需要預備工作
1.java8環境
這個就不用多說了
2.Inno Setup Compiler
window上軟件打包工具
3.wix
打包成exe文件需要
4.示例的可執行jar
文中給出的案例是使用Swing組件彈出一個對話框,代碼很簡單,就兩行代碼
package com.frank.test;
public class Java2exe {
public static void main(String[] args) {
javax.swing.JOptionPane.showMessageDialog(null, "hello java2exe");
System.exit(0);
}
}
打成可執行的jar,也很簡單,比如使用的是eclipse,可以:選中項目,右鍵,選擇 Export
導出時的配置勾選
開始打包
首先進入jar所屬文件夾
比如我是放在 D:\tmp\java2exe 目錄下,進來,然後,打開cmd,cmd也得進入D:\tmp\java2exe 目錄。這裏有個小技巧,直接在文件夾的地址欄 輸入cmd,再回車,就直接進入cmd界面,並且已經進入當前路徑
再執行打包命令
javapackager -deploy -native image -outdir outdir -outfile Java2exe -srcfiles java2exe.jar -appclass com.frank.test.Java2exe -name Java2exe
然後,你就會看到,文件夾內多了一個 outdir 文件夾,裏面有很多東西,在outdir/bundles/Java2exe目錄下,有一個 Java2exe.exe 文件,它就是我們最終需要的exe可執行文件
結果驗證
雙擊Java2exe.exe文件測試一下
參數詳解
好了,已經可以達到預期了。但是 打包過程中,使用到的命令,具體是什麼含義呢?一個一個來解釋
javapackager -deploy -native image -outdir outdir -outfile Java2exe -srcfiles java2exe.jar -appclass com.frank.test.Java2exe -name Java2exe
其中:
javapackager 是java8自帶的打包程序
-deploy 表示要打包成exe或者其他平臺的包
-native image 創建原生的鏡像(打成window的exe)
-outdir outdir ,輸出的目錄,後面的具體目錄
-outfile Java2exe 輸出的文件,後面是文件名
-srcfiles java2exe.jar ,要打包的jar文件,後面是具體文件
-appclass com.frank.test.Java2exe ,jar的全限定名,就是詳細包名+類名
-name Java2exe ,最終給使用者呈現的名字,就是 結果驗證 過程中,雙擊的那個文件名
當然,還有其他的參數,比如 -description 應用的描述、-Bicon 圖標等等。在cmd中,使用 javapackager 可以列舉出所有的參數及其註釋
用戶無JRE環境,可以直接運行?
可以的。如果要提供給用戶使用,用戶電腦上沒有安裝JRE環境,需要把 outdir 全部提供給用戶,因爲 outdir文件夾內,包含了JRE所需的所有文件。