首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

從 JAR 到 EXE:Java 桌面應用打包與發佈完整指南

     編輯:Java 相關知識

前言

開發完 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 運行三種環境下路徑解析一致。

第一階段:打包可運行 JAR 文件

方案一:Eclipse 內建 Runnable JAR File Export (推薦新手)

  1. 右鍵專案 → Export → Java → Runnable JAR file。
  2. Launch configuration 選擇主類對應的運行配置。
  3. Library handling 選擇 Extract required libraries into generated JAR (第一個選項)。此選項會將依賴庫解壓並合併到生成的 JAR 中,同時保留資源文件夾結構,是兼容性最好的選擇。
  4. 完成導出,雙擊生成的 Lottery.jar 即可運行。

Eclipse Export Runnable JAR 步驟 1 Eclipse Export Runnable JAR 步驟 2

方案二:Eclipse 內建 Jar File Export (不推薦用於可執行程式)

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

Eclipse Export Jar File 界面

方案三:Fat Jar / OneJar 插件 (進階)

這類插件將所有依賴完整打包。但需注意:解壓後可能只看到 one-jar 等啟動器文件,資源文件被封裝在內部結構中。若代碼使用 getResource 讀取資源,需確認資源路徑映射正確,否則易發生空指針異常。建議初學者優先使用方案一。

第二階段:使用 exe4j 生成 Windows 原生 EXE

exe4j 是一款專業的 Java 轉 EXE 工具,生成的 EXE 體驗更接近原生應用(支持圖標、版本信息、啟動畫面、JRE 綁定等)。

關鍵配置步驟

  1. 輸入目錄:指定包含 JAR 包及資源文件夾的根目錄(建議使用絕對路徑)。將 exe4j 專案文件保存在此根目錄下,便於相對路徑解析。
  2. 可執行文件目錄:設置為 . (當前目錄),表示 EXE 生成在根目錄下。
  3. JRE 搜索順序:在「JRE」頁籤中,優先勾選 Bundled JRE (捆綁 JRE) 或 Search sequence 中將「JRE directory」置頂。這樣發佈時可攜帶私有 JRE,確保在未安裝 Java 或版本不匹配的機器上也能運行。
  4. 圖標與圖片:設置 Program Icon 和 Splash Screen 圖片路徑(可選)。

exe4j 目錄配置 exe4j JRE 搜索順序配置

第三階段:使用 Inno Setup 製作安裝包

有了 EXE 後,使用 Inno Setup 將 EXE、捆綁的 JRE 目錄、配置文件、卸載入口等打包成單一的 Setup.exe。Inno Setup 腳本語法簡單,支持壓縮、創建快捷方式、註冊表寫入等標準安裝程式功能,遵循向導「下一步」即可快速生成專業級安裝包。

總結與最佳實踐

  • 資源訪問:統一使用 Class.getResource(),拒絕硬編碼路徑。
  • JAR 打包:優先使用 Eclipse「Runnable JAR File」→「Extract required libraries」。
  • EXE 生成:exe4j 配置捆綁 JRE,解決用戶端環境差異。
  • 最終交付:Inno Setup 製作安裝包,提升分發專業度。

掌握這套流程,你就能將 Java 桌面應用像原生 C++ 程式一樣優雅地交付給最終用戶。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved