在intellij中,只能支援JDK 8以下打包exe功能,只要用新一點的JDK,就會找不到一堆東西。
目前看起來intellij也沒有要把這功能升級上去的意思,還好Maven上有JavaPackager
這個套件能彌補這個空缺的功能,而且打包出來的exe檔案更小、更簡潔,重點是支援中文路徑(耶~)。
1.建立完JavaFx專案後,預設會有一個HelloApplication
的程式進入點,這邊需要額外建立一個進入點class,用Main.java
為例,為了讓系統自動將javafx套件也打包進去,所以我們需要在這邊動點手腳。
2.修改Main.java
程式碼,當作HelloApplication
程式進入點的跳板。
package com.example.test2; public class Main { public static void main(String [] args) { HelloApplication.main(args); // 執行HelloApplication } }
3.可以嘗試執行Main.java
,確認可以正常啟動。
4.再來設定pom.xml
的插件<plugin>
功能:
增加javapackager的plugin後進行重整
<!-- javapackager --> <plugin> <groupId>io.github.fvarrui</groupId> <artifactId>javapackager</artifactId> <version>1.6.7</version> <executions> <execution> <phase>package</phase> <goals> <goal>package</goal> </goals> <configuration> <mainClass>com.example.test2.Main</mainClass> <bundleJre>true</bundleJre> <generateInstaller>false</generateInstaller> <administratorRequired>false</administratorRequired> <platform>windows</platform> </configuration> </execution> </executions> </plugin>
<mainClass>:改成我們的跳板進入點Main.java
<bundleJre>:必須為true
,才會把你的環境也打包進去。
<platform>:會綁定作業系統,例如windows只能產生windows的,要產生linux要到linux環境下。
其他參數設定可至Github查詢。
到這邊javapackager的架構就導入完成了。
5.接下來是進行打包輸出執行檔:
開啟右方的Maven,並點選Execute Maven Goal執行指令
執行指令:mvn clean package
就會開始進行打包
[INFO] Creating bundles ... [INFO] Bundles created! [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 35.815 s [INFO] Finished at: 2022-12-05T15:37:37+08:00 [INFO] ------------------------------------------------------------------------ Process finished with exit code 0
最後出現BUILD SUCCESS
就完成了!
輸出的執行檔會在target資料夾中,即可測試執行!
2023/04/17新增:
*新的專案架構會有module-info.java
檔案,如沒設定好套件路徑會打包失敗,如果不好設定的話,就直接把他移除再次打包即可。
*自訂產出的exe icon方式:準備256×256的icon檔,放至專案目錄/assets/windows/$artifactId.icon
,重新打包即可,不同平台依此類推,github有詳細說明。
-END-
發佈留言