我有一个 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/