转换现有的应用程序

任何独立的 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="maintainer@example.com"/>
            <fx:bundleArgument arg="mac.CFBundleName" value="Java Tree Demo"/>
            <fx:bundleArgument arg="win.menuGroup" value="Java Demos"/>

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

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

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

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

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

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

生成 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 应用程序。

首页