当程序不是 运行 时,Desktop.setOpenFileHandler 不起作用

Desktop.setOpenFileHandler doesn't work when program isn't running

我正在为 mac 制作一个程序,它有自己的文件扩展名 .edul。我让它工作,这样当程序已经打开并且你打开文件时它会加载它,但是当我在程序还没有 运行 时尝试这个时我没有得到事件并且它不在 args 中。

我试图更改为 com.apple.eawt.Application,但不幸的是 java.desktop 没有导出这个 class,所以这没有用。

Desktop desktop = Desktop.getDesktop();
desktop.setOpenFileHandler(e -> {
    try {
        FileWriter fileWriter = new FileWriter(System.getProperty("user.home") + "/Desktop/test.txt");
        fileWriter.write(e.getFiles().toString());
        fileWriter.close();
    } catch (IOException ignored) {
    }
});

所以我希望我桌面上的一个文件具有我在程序 运行 之前打开的文件的位置,当它是 运行 并且我打开另一个文件时它也显示在我的桌面上.

所以在第一个文件打开后: [file/path/test.edul]

并在几秒钟内打开文件: [file/path/test2.edul]

我目前只得到: [file/path/test2.edul]

所以,问题是,当您在 class 中定义一个 FileOpenHandler 来启动您的 fx 应用程序时,FileOpenEvent 仅在程序已经 运行.因此,您应该制作一个不扩展 Application 的另一个 main class,即使应用程序仍在启动,FileOpenEvent 也会正确抛出。