文档

Java™教程
隐藏目录
使用文件关联
导航: 部署
教程: 部署自包含应用程序

使用文件关联

提供自包含应用程序的一个优点是能够设置文件关联。根据MIME类型或文件扩展名,可以将特定类型的文件与应用程序关联起来,以便使用您的应用程序打开关联的文件。例如,如果您的应用程序用于编辑文本文件,您可以设置一个文件关联,以便在用户双击具有扩展名.txt的文件时运行您的应用程序。

文件关联演示程序读取JavaScript和Groovy代码。使用MIME类型和文件扩展名,将应用程序与JavaScript和Groovy文件关联起来。

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

设置文件关联

生成自包含应用程序捆绑包的Ant任务在文件关联演示的build.xml文件中。使用<fx:association> Ant元素将文件扩展名或MIME类型与您的应用程序关联起来。Linux打包程序需要MIME类型,Windows打包程序需要文件扩展名,而OS X打包程序至少需要其中一个属性。最佳实践是使用这两个属性,将MIME类型和文件扩展名进行一对一映射,这样您就可以在多个平台上使用相同的构建文件。有关此元素的更多信息,请参见<fx:association>

下面的代码显示了在fx:deploy元素中包含的内容,用于将应用程序与扩展名.js.groovy以及MIME类型text/javascripttext/x-groovy关联起来。

<fx:info title="文件关联演示"
         vendor="MySamples"
         description="Java打包器的文件关联演示"
         category="演示"
         license="3条款BSD">
    <fx:association extension="js" mimetype="text/javascript" description="JavaScript源码"/>
    <fx:association extension="groovy" mimetype="text/x-groovy" description="Groovy源码"/>
</fx:info>

如果打包程序不支持文件关联,则会忽略这些关联。从JDK的8u40版本开始,Windows EXE和MSI打包程序、Linux DEB和RPM打包程序以及Mac .app打包程序支持文件关联。OS X PKG和DMG打包程序通过使用Mac .app打包程序支持文件关联。

请参见build.xml以获取完整的构建代码。

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

从关联文件启动

当自包含应用程序包安装在用户系统上时,安装程序会设置文件关联。安装完应用程序后,打开与应用程序关联的文件将启动应用程序。启动应用程序的操作取决于所在平台。

在Linux和Windows上启动

在Linux和Windows上,当根据文件关联启动应用程序时,正在打开的文件将作为参数传递给主类,该主类覆盖了类的默认参数。对于File Associations Demo,参数在启动应用程序实例后传递给loadscript方法。每打开一个文件,都会启动一个新的应用程序实例。

请参见ScriptRunnerApplication.java,了解Linux和Windows版本的代码。

在OS X上启动

在OS X上,只运行一个应用程序实例。当打开关联的文件时,会向应用程序发送一个事件。应用程序必须注册一个事件监听器来处理该事件。

File Association Demo for OS X有一个子类,其主方法与Linux和Windows版本不同。该主方法以与Linux和Windows版本相同的方式处理默认参数,然后向OS X注册FileOpenHandler的监听器。当打开关联文件时,该监听器的事件方法被调用,并从OpenFilesEvent对象的getFiles方法中提取文件名。

请参见ScriptRunnerApplicationMac.java,了解OS X版本的代码。

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

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

文件关联演示的项目包含应用程序的Java源文件,位于/src/sample/fa目录中。自定义图标位于/src/package/平台目录中。要与应用程序一起打包的示例文件位于/src目录中。

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

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

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

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

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

其他资源

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

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


上一页: 转换现有应用程序
下一页: 添加外部库