转换现有的应用程序

任何独立的 Java 应用程序或 Java Web Start 应用程序都可以打包为独立的应用程序。如果您有 JavaServlets,请参见将 Java Applet 重新编写为 Java Web Start 应用程序,以获取有关将 Servlets 覆盖到 Java Web Start 应用程序的信息,然后可以将其打包为独立的应用程序。

在转换应用程序之前,请确保已为平台安装了必需的先决条件。有关信息,请参见包装独立应用的先决条件

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

设置目录

识别和组织应用程序所需的文件。一个简单的应用程序可能只需要一个 JAR 文件。更复杂的应用程序可能还需要其他库或资源。独立的应用程序也可以使用图标或配置文件之类的自定义资源。

动态树演示仅需要DynamicTreeDemo.jar文件,该文件位于项 Object/dist目录中。不需要 Java Web Start 版本的应用程序所需的 HTML 和 JNLP 文件,并且对于独立式应用程序,Binding 程序将忽略它们。

为了为 Dynamic Tree Demo 提供一个自定义图标,该图标代表在用户桌面上安装该应用程序时的应用程序,为每个受支持的平台提供了一个图标。这些图标位于/src/package/platform目录中。针对每个受支持的平台,图标以不同的格式提供:Windows 的.ico格式,Linux 的.png格式和 OS X 的.icns格式。

以下示例显示了创建独立的 Binding 包之前 Dynamic Tree Demo 项 Object 目录结构:

/packager_DynamicTreeDemo     <--- application project
   /dist
      DynamicTreeDemo.jar
      ...
   /src
      /package                <--- custom resources
         /linux
         /macosx
         /windows
      /webstartComponentArch  <--- application source files
      ...

设置构建文件

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

对于动态树演示,项目根目录中的packager.xml文件包含用于生成自包含应用程序 Binding 包的 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="Dynamic Tree Demo"
                        mainClass="webstartComponentArch.DynamicTreeApplication"
                        version="1.0"
            />

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

            <fx:info title="Dynamic Tree Demo"
                     vendor="My Company"
                     description="A Demo of a Dynamic Swing Tree"
                     category="Demos"
                     copyright="(c) 2014 My Company"
                     license="3 Clause BSD"
            />

            <fx:bundleArgument arg="linux.bundleName" value="dynamic-tree-demo"/>
            <fx:bundleArgument arg="email" value="[email protected]"/>
            <fx:bundleArgument arg="mac.CFBundleName" value="Java Tree Demo"/>
            <fx:bundleArgument arg="win.menuGroup" value="Java Demos"/>

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

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

  • 使用xmlns:fx="javafx:com.sun.javafx.tools.ant作为名称空间。

  • taskdef任务必须在fx:deploy任务之前执行。 classpath属性包含来自 JDK 的ant-javafx.jar文件的位置以及包含自定义资源的目录。对于动态树演示,classpath属性包括/src目录,该目录包含自定义图标。

  • fx:deploy任务放置在所需的目标中。指定放置本机二进制文件的输出目录,并指定要生成的本机二进制文件。

如果为本机二进制文件指定了all,则将生成用于执行此任务文件的平台的所有可能的二进制文件,包括磁盘映像。所有平台的有效值为allimage,在 Windows 和 Linux 上生成文件目录,在 OSX 上生成.app文件;和installer,仅为平台生成可安装的 Binding 包,而不生成磁盘映像。特定于平台的二进制文件的有效值为 Windows 的exemsidebrpm(对于 Linux);对于 OS X,分别为debpkgmac.appStore。必须安装必需的工具才能构建所选的二进制文件。

对于动态树演示,outdir属性设置为${basedir}/build/packagerbasedirproject元素中定义,在这种情况下,它被设置为当前目录。 nativeBundles属性设置为all,因此构建了运行打包任务的平台的所有格式。

  • verbose属性是可选的。使用此属性可以提供诊断信息。

  • 提供有关应用程序的信息。在fx:application元素的name属性和fx:info元素的title属性中设置应用程序的名称。在fx:application元素的version属性中设置应用程序的版本。使用fx:info元素提供应用程序的描述,供应商名称,许可证信息和其他元数据。

  • 有关 JAR 文件和其他资源的信息在fx:resources元素中设置。

  • 启动信息在fx:application元素的mainclass属性中设置。

对于“动态树演示”,使用一个简单的单个启动器webstartComponentArch.DynamicTreeApplication,这是应用程序的主类。

  • fx:bundleArgument元素中提供了其他特定于平台的自定义项。Binding 程序无法识别的参数将被忽略,因此一个构建文件可以包含所有平台的打包信息。

对于动态树演示,将应用以下定制:

  • Linux 的 Binding 包名称设置为dynamic-tree-demo

    • 提供了一个电子邮件地址。

    • OS X 菜单栏中显示的名称设置为Java Tree Demo

    • Windows 上存储应用程序的菜单组的名称设置为Java Demos

生成 Binding 包

运行您在要为其自包含应用程序构建 Binding 软件的平台上创建的打包任务。

对于动态树演示,请从项 Object 根文件夹中运行以下命令:

ant package

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

以下示例显示了为 Windows 生成自包含的 Binding 包之后的 Dynamic Tree Demo 项 Object 目录结构:

/packager_DynamicTreeDemo     <--- application project
   /build
      /packager
         /bundles
            Dynamic Tree Demo         <---folder image
            Dynamic Tree Demo-1.0.exe <---EXE installer
            Dynamic Tree Demo-1.0.msi <---MSI installer
      ...   
   /dist
      DynamicTreeDemo.jar
      ...
   /src
      /package                <--- custom resources
         /linux
         /macosx
         /windows
      /webstartComponentArch  <--- application source files
      ...

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

Additional References

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

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