本教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言变更了解Java SE 9及后续版本中的更新语言特性摘要。
请参阅JDK发布说明了解所有JDK版本中的新功能、增强功能和已删除或已弃用选项的信息。
为了在应用程序运行的每个平台上生成一个自包含的应用程序包,您必须在每个平台上运行打包工具。您可以选择使用特定于平台的构建文件或设置一个可在所有平台上运行的构建文件。特定于平台的文件可能更容易设置,但是您必须维护多个文件。
文件关联演示中描述的使用文件关联使用一个可在所有平台上运行的单个构建文件。
构建文件的以下元素支持其在所有平台上的使用:
应用程序的主类是Linux和Windows的ScriptRunnerApplication.java
和OS X的ScriptRunnerApplicationMac.java
。以下代码在-pre-init
任务中用于确定使用哪个类:
<condition property="main.class" value="sample.fa.ScriptRunnerApplication" else="sample.fa.ScriptRunnerApplicationMac"> <not><os family="mac"/></not> </condition>
以下代码在-pre-init
任务中用于防止在Linux或Windows上运行时编译OS X的主类:
<condition property="excludes" value="**/*Mac.java"> <not><os family="mac"/></not> </condition>
<fx:bundleArgument>
元素用于向不同的打包程序传递参数。未被打包程序使用的参数将被忽略,因此构建文件可以包含所有平台所需的参数。以下代码定义了Linux、OS X和Windows的参数:
<fx:bundleArgument arg="classpath" value="FileAssociationsDemo.jar lib/groovy-all-2.3.8.jar"/> <fx:bundleArgument arg="win.exe.systemWide" value="true"/> <fx:bundleArgument arg="linux.bundleName" value="file-association-demo"/> <fx:bundleArgument arg="email" value="maintainer@example.com"/> <fx:bundleArgument arg="mac.CFBundleName" value="File Assoc Demo"/> <fx:bundleArgument arg="win.menuGroup" value="Java Demos"/>
有关完整构建代码,请参见build.xml
。
您可以从自包含应用程序示例下载文件关联演示的源文件。