文档

Java™教程
隐藏目录
转换现有应用
路径:部署
课程:部署自包含应用程序

转换现有应用程序

任何独立的Java应用程序或Java Web Start应用程序都可以打包为自包含的应用程序。如果您有一个Java小程序,请参阅将Java小程序重写为Java Web Start应用程序,以获取将小程序转换为Java Web Start应用程序的信息,然后可以将其打包为自包含的应用程序。

在转换应用程序之前,请确保您的平台已安装所需的先决条件。有关详细信息,请参阅打包自包含应用程序的先决条件

本部分将从部署Java Web Start应用程序中的动态树演示转换为自包含的应用程序。您可以从自包含应用程序示例下载此演示的源文件。

设置目录

确定并组织应用程序所需的文件。一个简单的应用程序可能只需要一个JAR文件。更复杂的应用程序可能还需要额外的库或资源。自包含的应用程序还可以使用自定义资源,如图标或配置文件。

动态树演示只需要DynamicTreeDemo.jar文件,该文件位于项目的/dist目录中。Java Web Start版本的应用程序所需的HTML和JNLP文件不需要,并且自包含应用程序的打包工具会忽略它们。

为动态树演示提供自定义图标,表示应用程序在用户的桌面上安装时的图标,为每个支持的平台提供一个图标。这些图标放置在/src/package/platform目录中。对于每个支持的平台,图标以不同的格式提供:Windows使用.ico格式,Linux使用.png格式,OS X使用.icns格式。

以下示例显示了在创建自包含的捆绑包之前,动态树演示项目的目录结构:

/packager_DynamicTreeDemo     <--- 应用程序项目
   /dist
      DynamicTreeDemo.jar
      ...
   /src
      /package                <--- 自定义资源
         /linux
         /macosx
         /windows
      /webstartComponentArch  <--- 应用程序源文件
      ...

设置构建文件

设置所需的打包任务的Ant任务。这些任务可以添加到项目的build.xml文件中,或者放在由build.xml文件导入的单独文件中。

对于动态树演示,项目根目录中的packager.xml文件包含了用于生成自包含应用程序包的Ant任务。下面是packager.xml文件的源代码示例:

<project name="DynamicTreePackaging" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
    <echo>${java.home}/../lib/ant-javafx.jar</echo>
    <target name="package" depends="jar">
        <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
                 uri="javafx:com.sun.javafx.tools.ant"
                 classpath="${java.home}/../lib/ant-javafx.jar;src"/>

        <fx:deploy outdir="${basedir}/build/packager" 
                   outfile="DynamicTreeDemo"
                   nativeBundles="all"
                   verbose="false">

            <fx:application name="动态树演示"
                        mainClass="webstartComponentArch.DynamicTreeApplication"
                        version="1.0"
            />

            <fx:resources>
                <fx:fileset dir="dist" includes="DynamicTreeDemo.jar"/>
            </fx:resources>

            <fx:info title="动态树演示"
                     vendor="我的公司"
                     description="动态Swing树的演示"
                     category="演示"
                     copyright="(c) 2014 我的公司"
                     license="3 Clause BSD"
            />

            <fx:bundleArgument arg="linux.bundleName" value="dynamic-tree-demo"/>
            <fx:bundleArgument arg="email" value="maintainer@example.com"/>
            <fx:bundleArgument arg="mac.CFBundleName" value="Java树演示"/>
            <fx:bundleArgument arg="win.menuGroup" value="Java演示"/>

        </fx:deploy>
    </target>
</project>

使用以下信息设置Ant任务:

生成捆绑包

运行你为自包含应用程序构建捆绑包创建的打包任务。

对于Dynamic Tree Demo,从项目的根目录运行以下命令:

     ant package

当打包任务完成时,应用程序项目中的build/packager/bundles目录将包含生成的本机二进制文件。

下面的示例显示了生成Windows自包含捆绑包后Dynamic Tree Demo项目的目录结构:

/packager_DynamicTreeDemo     <--- 应用程序项目
   /build
      /packager
         /bundles
            Dynamic Tree Demo         <---文件夹图像
            Dynamic Tree Demo-1.0.exe <---EXE安装程序
            Dynamic Tree Demo-1.0.msi <---MSI安装程序
      ...   
   /dist
      DynamicTreeDemo.jar
      ...
   /src
      /package                <--- 自定义资源
         /linux
         /macosx
         /windows
      /webstartComponentArch  <--- 应用程序源文件
      ...

请注意,除了自包含捆绑包外,打包工具还会始终为应用程序生成JAR、JNLP和HTML文件。这些文件提供了分发应用程序的其他选项。

其他参考资料

有关自包含应用程序的更多信息,请参阅自包含应用程序打包

有关Java打包工具的Ant任务的更多信息,请参阅 JavaFX Ant Tasks,这些任务适用于Java和JavaFX应用程序。


上一页: 打包自包含应用的先决条件
下一页: 使用文件关联