【发布时间】:2016-04-06 18:44:52
【问题描述】:
我有一个 JavaFX 8 桌面应用程序,并且我正在创建一个 .app 应用程序包以将该应用程序分发给 Mac 用户。我使用 Oracle “自包含应用程序打包”工具来生成捆绑包。
我遇到的问题与与我的应用程序关联的文件有关。我将扩展名.wordy 与这些文件相关联。如果我打开应用程序并在 Mac Finder 中双击其中一个文件,我的应用程序会收到一个包含文件路径的OpenFilesEvent,并且一切正常。但是,如果应用程序未打开,则在 Finder 中双击 .wordy 文件会按预期打开我的应用程序,但我从未收到包含用户双击文件路径的事件。
文件关联是在Oracle“自包含应用程序打包”工具的Ant脚本中完成的,如下:
<project name="VocabHunter Packaging" basedir=""
xmlns:fx="javafx:com.sun.javafx.tools.ant">
...
<fx:info title="VocabHunter">
<fx:association description="VocabHunter session"
extension="wordy"
mimetype="application/x-vnd.VocabHunterSession"
icon="${basedir}/icons/mac/VocabHunterSession.icns"/>
</fx:info>
...
</project>
在Java代码中,我获取com.apple.eawt.Application的一个实例,然后为OpenFilesEvent注册监听器,如下:
Application application = Application.getApplication();
application.setOpenFileHandler(new OsxOpenFilesHandler(listener));
你可以看到完整的代码here。
有谁知道如何解决这个问题,以便即使在双击文件时应用程序没有运行,我也会收到包含.wordy 文件路径的事件?
为了完整起见,我使用的是适用于 Mac 的 Oracle JDK 1.8.0_66。
【问题讨论】:
标签: java macos javafx javafx-8