java - Mac 上缺少 JavaFX 的 OpenFilesEvent

标签 java macos javafx javafx-8

我有一个 JavaFX 8 桌面应用程序,我正在创建一个 .app 应用程序包以将该应用程序分发给 Mac 用户。我使用 Oracle“自包含应用程序打包”工具来生成 bundle 。

我遇到的问题与我的应用程序关联的文件有关。我将扩展名 .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。

最佳答案

我用你的代码进行了测试,也遇到了这个问题。 但是当我直接在 start(Stage PrimaryStage) 方法中使用代码来监听时,如下所示:

Application lowLevelApp = com.sun.glass.ui.Application.GetApplication();
lowLevelApp.setEventHandler {...}

第一次双击文件时,我可以获得 OpenFilesEvent。

关于java - Mac 上缺少 JavaFX 的 OpenFilesEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569389/

相关文章:

macos - zsh 无法识别环境变量 - 没有这样的文件或目录 - Unix - MacOs

macos - “pgAdmin3” 无法打开,因为它来自身份不明的开发者

将 fxml 加载节点添加为子节点时未应用 JavaFX 样式表

JavaFX - ReadOnlyProperty 不是只读的

java - Mac 上的 Lotus Notes jvm\lib\ext 目录

android - 如何在命令行中为新的 Android 项目构建 gradle

java - Android 从 drawable 释放内存

java - 为什么对象数组中的元素没有更新?

java - Java中不插入MySQL数据库

java - 为什么Java swing组件做不出打字效果