開發完 Java 桌面應用後,如何將其打包成用戶可直接雙擊運行的可執行文件,是許多初學者面臨的第一個工程化難題。本文將以一個包含圖片資源的 Eclipse 專案為例,詳細講解從打包可運行 JAR、處理資源路徑、使用 exe4j 生成原生 EXE,到最終使用 Inno Setup 製作安裝包的完整流程。
假設專案結構如下:
bin/ ├── images/ (圖片資源目錄) └── Lottery.class (主類)
關鍵在於類加載資源的方式。為了讓打包後的程式能正確讀取 images 目錄下的圖片,推薦使用以下兩種方式獲取資源 URL:
// 方式一:相對於當前類的路徑
URL path = Lottery.class.getResource("images");
// 方式二:相對於 Classpath 根路徑 (JVM 加載類時的相對路徑)
URL path = ClassLoader.getSystemResource("images");
核心原則: 避免使用絕對文件路徑,統一使用 Class.getResource() 或 ClassLoader.getSystemResource(),確保在 IDE 運行、JAR 運行、EXE 運行三種環境下路徑解析一致。
Lottery.jar 即可運行。

若選擇 Jar File 並勾選「將所有輸出文件打包」,生成的 JAR 通常缺少 Main-Class 清單屬性,導致雙擊無法運行。此方式更適合打包類庫而非應用程式。

這類插件將所有依賴完整打包。但需注意:解壓後可能只看到 one-jar 等啟動器文件,資源文件被封裝在內部結構中。若代碼使用 getResource 讀取資源,需確認資源路徑映射正確,否則易發生空指針異常。建議初學者優先使用方案一。
exe4j 是一款專業的 Java 轉 EXE 工具,生成的 EXE 體驗更接近原生應用(支持圖標、版本信息、啟動畫面、JRE 綁定等)。
. (當前目錄),表示 EXE 生成在根目錄下。

有了 EXE 後,使用 Inno Setup 將 EXE、捆綁的 JRE 目錄、配置文件、卸載入口等打包成單一的 Setup.exe。Inno Setup 腳本語法簡單,支持壓縮、創建快捷方式、註冊表寫入等標準安裝程式功能,遵循向導「下一步」即可快速生成專業級安裝包。
Class.getResource(),拒絕硬編碼路徑。掌握這套流程,你就能將 Java 桌面應用像原生 C++ 程式一樣優雅地交付給最終用戶。