使用文件关联

向用户提供独立的应用程序的优点之一是可以构建文件关联。可以根据 MIME 类型或文件 extensions 将特定类型的文件与您的应用程序关联,以便使用您的应用程序打switch联的文件。例如,如果您的应用程序编辑文本文件,则可以设置一个文件关联,当用户 Double 击 extensions 为.txt的文件时,该文件关联将运行您的应用程序。

File Association Demo 读取 JavaScript 和 Groovy 代码。同时使用 MIME 类型和文件 extensions,该应用程序与 JavaScript 和 Groovy 文件相关联。

您可以从自包含的应用示例下载文件关联演示的源文件。

设置文件关联

用于生成自包含应用程序 Binding 包的 Ant 任务位于文件关联演示的build.xml文件中。 <fx:association> Ant 元素用于将文件 extensions 或 MIME 类型与您的应用程序关联。 LinuxBinding 软件需要 MIME 类型,WindowsBinding 软件需要文件 extensions,而 OS XBinding 软件至少需要其中一个属性。最好同时使用这两个属性以及 MIME 类型和文件 extensions 之间的一对一 Map,这使您可以在多个平台上使用同一构建文件。有关此元素的更多信息,请参见<fx:association>

以下代码显示了将应用程序与 extensions.js.groovy以及 MIME 类型text/javascripttext/x-groovy关联所需包含在fx:deploy元素中的内容。

<fx:info title="File Association Demo"
         vendor="MySamples"
         description="A Demo of File Associations for Java Packager"
         category="Demos"
         license="3 Clause BSD">
    <fx:association extension="js" mimetype="text/javascript" description="JavaScript Source"/>
    <fx:association extension="groovy" mimetype="text/x-groovy" description="Groovy Source"/>
</fx:info>

如果 Binding 程序不支持文件关联,则将忽略关联。从 JDK 的 8u40 版本开始,Windows EXE 和 MSIBinding 器,Linux DEB 和 RPMBinding 器以及 Mac .appBinding 器都支持文件关联。 OS X PKG 和 DMGBinding 软件通过使用 Mac .appBinding 软件来支持文件关联。

有关完整的构建代码,请参见build.xml

要为 File Association Demo 生成可安装的 Binding 包,请参阅转换现有的应用程序中的“生成 Binding 包”部分。

从关联文件启动

当自包含应用程序 Binding 包安装在用户系统上时,文件关联由安装程序设置。安装该应用程序后,打开与您的应用程序关联的文件将导致您的应用程序启动。启动应用程序所采取的操作取决于运行该应用程序的平台。

在 Linux 和 Windows 上启动

在 Linux 和 Windows 上,当基于文件关联启动应用程序时,打开的文件将作为参数传递给主类,该类将覆盖该类的默认参数。对于文件关联演示,在启动应用程序实例后,参数将传递到loadscript方法。对于打开的每个文件,将启动应用程序的不同实例。

有关代码的 Linux 和 Windows 版本,请参见ScriptRunnerApplication.java

在 OS X 上启动

在 OS X 上,仅运行一个应用程序实例。打switch联文件后,事件将发送到应用程序。该应用程序必须注册一个事件侦听器以处理该事件。

OS X 的文件关联演示文件的子类的主要方法与 Linux 和 Windows 的版本不同。此 main 方法以与 Linux 和 Windows 版本的 main 方法相同的方式处理默认参数,然后在 OS X 中为FileOpenHandler注册侦听器。打switch联文件时,将调用此侦听器的事件方法,并从OpenFilesEvent对象的getFiles方法中提取文件名。

有关代码的 OS X 版本,请参见ScriptRunnerApplicationMac.java

构建文件关联演示的 OS X 版本需要访问 Oracle JDK 随附的 OS X 特定类。 javac编译器使用的符号文件中不包含大多数com.apple.eawt类。为了告诉编译器忽略符号文件,将-XDignore.symbol.file=true参数传递给构建文件中-pre-init Ant 任务中的javac编译器。参见build.xml

有关文件关联演示的更多信息

File Association Demo 的项目在/src/sample/fa目录中包含该应用程序的 Java 源文件。 /src/package/platform目录中提供了自定义图标。与应用程序打包在一起的示例文件位于/src目录中。

为了处理 Groovy 代码,文件关联演示需要 Groovy 库。构建过程将 Groovy 库下载到/lib目录。有关信息,请参见添加外部库

生成 JAR 文件后,构建过程会将/src/lib目录复制到/dist目录。 /dist目录将包含您的应用程序的所有文件。

文件关联演示以文件名作为参数。如果通过打switch联文件启动应用程序,则传入关联文件的名称。如果直接启动应用程序,则传入与应用程序 Binding 在一起的示例文件sample.js。有关信息,请参见提供默认参数

构建文件关联需要 管理 员特权。默认情况下,Windows 的 EXE 安装程序不要求 管理 员特权。为了强制请求文件关联演示的 管理 员特权,将 Binding 参数win.exe.systemWide设置为true。此设置表明已执行系统范围的安装,这需要 管理 员权限。

文件关联演示在 Linux,OS X 和 Windows 上运行。该演示设置为使用包含所有平台信息的单个构建文件。有关信息,请参见对所有平台使用通用构建文件

Additional Resources

有关文件关联的更多信息,请参见将文件与独立应用程序关联

有关 JavaFX Ant 参数的更多信息,请参见JavaFX Ant 任务参考