exe4j 可將可執行 JAR 包裝成原生 Windows .exe,支援內嵌 JRE (免裝 Java 環境)、自定義圖示、Splash 畫面、64/32 位選擇、JVM 參數配置。本文以圖文步驟詳細說明從安裝到產出可發布 EXE 的全流程。
MANIFEST.MF 含 Main-Class).ico (建議 256x256、含多尺寸)jre 資料夾)
將 JAR 內嵌至 EXE 內部,啟動時解壓到暫存目錄執行 (最常用模式)。

MyApp)
.ico 檔
Generate 32 bit executable (產出兩個 EXE)
+ → Archive → 選擇你的 .jar

main 方法的類別 → 選擇正確主類


+ → Directory → 選擇你的 jre 資料夾 (如 C:\Program Files\Java\jre1.8.0_301)


產出 MyApp.exe 於輸出目錄,雙擊即可運行。
| 現象 | 原因 | 解決 |
|---|---|---|
| 啟動閃退 / NoClassDefFoundError | JAR 依賴缺失 / Classpath 未包含所有第三方 JAR | 步驟 6 將所有依賴 JAR 加入 Classpath,或使用 Maven Shade/Gradle Shadow 打包成 Fat JAR |
| 「Could not find JRE」 | 未內嵌 JRE 且目標機無安裝 Java / JRE 目錄結構錯誤 | 步驟 9 正確指向 jre 根目錄 (含 bin/java.exe, lib/rt.jar) |
| 64 位 EXE 在 32 位系統報錯 | 架構不匹配 | 分別建立 32/64 位專案產出兩個 EXE,或用啟動器判斷架構調用 |
| 中文路徑/參數亂碼 | JVM 編碼預設非 UTF-8 | 在 JRE → VM Parameters 加入 -Dfile.encoding=UTF-8 |
| 啟動極慢 | JAR 過大、解壓慢、殺毒軟體掃描 | 啟用 JRE → Cache JAR in memory、排除殺毒掃描、精簡依賴 |
-Xms256m -Xmx1024m -XX:+UseG1GC 等。exe4jc 命令列模式構建,注入 Git Commit ID、Build Number。| 工具 | 授權 | 內嵌 JRE | 跨平台 | 原生映像 |
|---|---|---|---|---|
| exe4j | 商業 | ✅ | ❌ (僅 Win) | ❌ |
| Launch4j | BSD | ✅ | ❌ (僅 Win) | ❌ |
| jpackage (JDK 14+) | GPL | ✅ | ✅ (Win/Mac/Linux) | ❌ |
| GraalVM Native Image | Oracle/Community | N/A (無 JVM) | ✅ | ✅ (AOT 編譯) |