Java開發過程中存在一個難題:分發自己的程序,需要客戶電腦中已安裝jre環境。如果用戶在系統中沒有要求的Java版本,則必須安裝它。JavaFX提供新的部署選項稱為自包含應用程序包(A self-contained application)。
A self-contained application is a wrapper for your JavaFX application, making it independent of what the user might have installed.
一個自包含應用包是一個包含Java應用和它的依賴的包,它使得應用可獨立於用戶可能安裝的內容。
本文主要介紹如何使用IDEA打包,以及在打包過程中遇到的各種坑。我們可以直接將 java 程序打包成安裝包,具體來說:
l Windows:exe,msi
l Mac:dmg,pkg
l Linux:deb,rpm
一、使用IDEA Artifact打包exe
1、添加Artifacts
“File Structure”—“Artifacts”,點擊“+”添加“JavaFx application”—“From Module XXX”。
2、添加依賴
將右邊模塊及其依賴的底層模塊下的jar包添加到左邊(Put Into Output Root)
將右邊依賴的底層模塊打包到右邊(Pack Into /xxx.jar)。
3、配置JavaFX打包信息
Application class中添加項目的啟動類,將Native bundle設為all或image。
其他信息可不填:
Title:應用標題
Vendor:應用作者
4、構建Artifacts。
輸出目錄:out\artifacts\client\bundles\client
注意事項
1、 所有依賴項必須全部添加到左邊,否則exe將無法執行。此時需
2、 JavaFX打包信息中不可以使用中文,否則構建會報錯。
3、 IDEA Artifacts雖然可以打包各個系統的執行程序,但是在一個系統上只能打隊友系統的安裝包。比如在windows上,就只能打包成exe。
二、為JavaFX應用創建安裝程序
1、首先需要下載兩個工具
- exe4j,一個將jar轉換成exe的工具
- inno setup,一個將依賴和exe一起打成一個安裝程序的工具
2、maven把Springboot項打包
可以再IDEA的Terminal中直接輸入命令或者用IDEA右側的Maven工具。
3、打包成exe
先把exe4j.rar解壓,根據自己系統版本運行安裝程序,直接下一步到底,安裝后運行。
設置執行權限和縮放
使用inno setup創建一個打包腳本。配置到最后一步會彈出問你是否馬上編譯,選擇否,先把腳本寫好再自己編譯。
在下圖位置加一行代碼 #define MyJreName "runtime"
在[Files]下加一行代碼
Source: "自己本地JRE路徑\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs
注意事項
1、 創建setup時打包的jre路徑應該與打包成exe時自定義的jre路徑保持一致,比如上圖中的“runtime”。否則,安裝后的exe程序會報錯。
2、 在JVM啟動參數上加上 -Dfile.encoding=UTF-8,強行設置系統文件編碼格式為utf-8。
測試運行
使用VMware虛擬機
參考資料
其他打包參考如下資料:
第七部分:部署 你如何使用Eclipse和e(fx)clipse插件創建本地包。
IDEA打包
