【问题标题】:JavaApplicationStub with CFBundleDocumentTypes带有 CFBundleDocumentTypes 的 JavaApplicationStub
【发布时间】:2010-06-13 21:15:57
【问题描述】:

我正在尝试使用 CFBundleDocumentTypes 将自定义文件扩展名与我的应用程序相关联。据我所知,这似乎“有效”——当我双击文件时,JavaApplicationStub 会启动我的应用程序。但是,没有通过我在 java 中设置的 ApplicationListener 事件注册回调。

我使用Set Default file association Mac OS X Java Package Maker Installer 中列出的代码进行文件关联,文件关联本身看起来很好,但似乎是应用程序存根尝试启动文件,因此失败。

我将 Apple AppplicatinListener 代码添加到我的 java 应用程序中(类似于 http://developer.apple.com/mac/library/documentation/Java/Reference/1.5.0/appledoc/api/index.html?com/apple/eawt/Application.html),但我的应用程序似乎没有收到回叫。

代码类似

Application.getApplication().addApplicationListener(
  new ApplicationAdapter() { 
    public void handleOpenFile(ApplicationEvent evt) {
      //some logging message here that I never get
    }
  }
);

我也许应该提到我也在使用 SWT...

任何帮助将不胜感激

【问题讨论】:

    标签: java macos swt filehandler


    【解决方案1】:

    很遗憾,您不能同时使用 SWT 和 eAWT 的 ApplicationListener。请参阅此SWT bug。 SWT 需要 Apple 在 JVM 中进行更改,然后我必须更改 SWT 才能使用它。

    由于您对打开文件事件感兴趣,您现在可以在所有平台上完全在 SWT 中执行此操作。在 3.6 SWT 中有一个新事件 SWT.OpenDocument,当您的应用程序的文件被双击时会触发。查看此blog post 并搜索“SWT.OpenDocument”。

    【讨论】:

      【解决方案2】:

      这不是很具体到您的问题,但我想到了一些事情:

      1)由于您使用的是Apple的JavaApplicationStub,因此可能会获得启动过程的诊断输出如下:

      $ 导出 JAVA_LAUNCHER_VERBOSE $ ./your.app/Contents/MacOS/JavaApplicationStub

      2) 您可能会查看 Apple 的示例应用程序 OSXAdapter,其中提到了 here

      3) 这是一个 SWT/Java/Mac 应用程序的工作 example

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 2014-03-11
        • 1970-01-01
        相关资源
        最近更新 更多