转换现有的应用程序
任何独立的 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
,则将生成用于执行此任务文件的平台的所有可能的二进制文件,包括磁盘映像。所有平台的有效值为all
; image
,在 Windows 和 Linux 上生成文件目录,在 OSX 上生成.app
文件;和installer
,仅为平台生成可安装的 Binding 包,而不生成磁盘映像。特定于平台的二进制文件的有效值为 Windows 的exe
和msi
。 deb
和rpm
(对于 Linux);对于 OS X,分别为deb
,pkg
和mac.appStore
。必须安装必需的工具才能构建所选的二进制文件。
对于动态树演示,outdir
属性设置为${basedir}/build/packager
。 basedir
在project
元素中定义,在这种情况下,它被设置为当前目录。 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 应用程序。