在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-
發佈留言