位置:首頁 > Java技術 > JavaFX教學 > JavaFX - 部署

JavaFX - 部署

Screenshot AddressApp Part 7

我想已經寫到本教學係列的最後一部分了,應該教你如何部署(例如:打包和發布)AddressApp


第7部分的主題

  • 使用e(fx)clipse本地包(Native Package)部署我們的JavaFX應用程序。

什麼是部署

部署是打包和發布軟件給用戶的過程。這是軟件開發的關鍵部分,因為它是第一次與使用我們軟件的用戶交流。

Java的廣告口號是編寫一次,到處運行,這說明Java語言的跨平台好處。理想情況下,這意味著我們Java應用可以運行在任何裝備有JVM的設備上。 在過去,安裝Java應用程序的用戶經驗不總是平滑的。如果用戶在係統中冇有要求的Java版本,它必須首先直接安裝它。這導致有些困難,例如,需要管理員權限,Java版本之間的兼容問題等等。 幸運的是,JavaFX提供新的部署選項稱為本地打包(也稱為自包含應用程序包)。一個本地包是一個包含你的應用代碼和平台指定的Java運行時的打包程序。 Oracle提供的官方JavaFx文檔包含一個所有JavaFX部署選項的擴展指南。 在本章節中,我們教你如何使用Eclipse和e(fx)clipse插件創建本地包


創建本地包

目標是在用戶的計算機上單個目錄中創建一個自包含的應用程序。下麵是AddressApp應用看起來的樣子(在Windows上):

AddressApp本地包

app目錄包含我們的應用數據和runtime目錄(包含平台相關的Java運行時)。

為了讓用戶更加舒適,我們也提供一個安裝器:

  • Windows下的exe文件安裝器
  • MacOS下的dmg(拖放)安裝器。

E(fx)clipse插件會幫助我們生成本地包和安裝器。

第1步 編輯build.fxbuild

E(fx)clipse使用build.fxbuild文件生成一個被Ant編譯工具使用的文件。(如果你冇有一個build.fxbuid文件,在Eclipse中創建一個新的Java FX項目,並且拷貝生成的文件過來。

  1. 從項目的根目錄下打開build.fxbuild

  2. 填寫包含一個星號的字段。對於MacOS:在應用程序標題中不能使用空格,因為好像會產生問題。 fxbuild設置

  3. 在Windows下Packaging Format選擇exe,MacOS下選擇dmg,Linux下選擇rpm

  4. 點擊Generate ant build.xml only的連接(在右邊可以找到)。 生成ant編譯

  5. 驗證是否創建一個新的build目錄和文件build.xml

第2步 添加安裝程序的圖標

我們希望安裝程序有一些好看的圖標:

  1. build目錄下創建下麵的子目錄:
    • build/package/windows (隻用於Windows)
    • build/package/macos (隻用於macos)
  2. 拷貝上麵的相關圖標到這些目錄中,現在它應該看起來如下所示:
    安裝器圖標
  3. 重要:圖標的名稱必須精確匹配build.fxbuild中指定的Application的標題名
    • YourAppTitle.ico
    • YourAppTitle-setup-icon.bmp
    • YourAppTitle.icns

第3步 添加資源

我們的resources目錄不能自動拷貝。我們必須手動添加它到build目錄下:

  1. build目錄下創建下麵的子目錄:
    • build/dist
  2. 拷貝resources目錄(包含我們應用的圖標)到build/dist.
    編譯資源

第4步 編輯build.xml包含圖標

E(fx)clipse生成的build/build.xml文件(準備使用Ant執行)。我們的安裝器圖標和資源圖像不能正常工作。

當e(fx)clipse冇有告訴它包含其它資源,例如resources目錄和上麵添加的安裝文件圖標時,我們必須手動編輯build.xml文件。

打開build.xml文件,找到路徑fxant。添加一行到${basedir}(將讓我們安裝器圖標可用)。

build.xml - 添加"basedir"
<path id="fxant">
  <filelist>
    <file name="${java.home}\..\lib\ant-javafx.jar"/>
    <file name="${java.home}\lib\jfxrt.jar"/>
    <file name="${basedir}"/>
  </filelist>
</path>

找到塊fx:resources id="appRes",文件的更下麵位置。為resources添加一行:

build.xml - 添加"resources"
<fx:resources id="appRes">
    <fx:fileset dir="dist" includes="AddressApp.jar"/>
    <fx:fileset dir="dist" includes="libs/*"/>
    <fx:fileset dir="dist" includes="resources/**"/>
</fx:resources> 

有時候,版本數不能添加到fx:application中,使得安裝器總是缺省的版本1.0(在注釋中很多人指出這個問題)。為了修複它,手動添加版本號(感謝Marc找到解決辦法)。 解決):

build.xml - 添加 "version"
<fx:application id="fxApplication"
    name="AddressApp"
    mainClass="ch.makery.address.MainApp"
    version="1.0"
/>

現在,我們已經能夠使用ant編譯運行build.xml了。這將會生成一個可運行的項目jar文件。但是我們希望更進一步,創建一個很好的安裝器。

第5步(Windows) - Windows exe安裝器

Windows下AddressApp

使用Inno Setup,我們能為我們的應用程序創建一個單獨.exe文件的Windows安裝器。生成的.exe執行用戶級彆的安裝(無需管理員權限)。也創建一個快捷方式(菜單和桌麵)。

  1. 下載Inno Setup 5以後版本,安裝Inno程序到你的計算機上。我們的Ant腳本將使用它自動生成安裝器。

  2. 告訴Windows Inno程序的安裝路徑(例如:C:\Program Files (x86)\Inno Setup 5)。添加Inno安裝路徑到Path環境變量中。如果你不知道哪裡可以找到它,閱讀Windows中如何設置路徑和環境變量.

  3. 重啟Eclipse,並且繼續第6步。

第5步(MAC) - MacOS dmg安裝器

MAC中AddressApp

為了創建Mac OS dmg拖放安裝器,不需要任何的要求。

注意:為了讓安裝器映像能工作,它的名稱必須與應用名稱相同。

第5步(Linux等) Linux rpm安裝器

其它打包選項(Windows的msi,Linux的rpm)參考本地打包博客 或者本oracle 文檔.

第6步 運行build.xml

最後一步,我們使用ant運行build.xml右擊 build.xml文件| Run As | Ant Build

運行Ant編譯

編譯將運行一會(在我的計算機上大概1分鐘)。

如果一切都成功,你應該在build/deploy/bundles目錄下找到本地打包。Windows版本看起來如下所示:

部署文件

文件AddressApp-1.0.exe可以用作為單個文件安裝應用。該安裝程序將拷貝打包到C:/Users/[yourname]/AppData/Local/AddressApp目錄下。