猛禽洛的程式筆記庫

[JavaFx] 在intellij內將JavaFx專案打包成exe的方法-JavaPackager (JDK 11以上可用)

在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-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *