1

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

我使用设置默认文件关联 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 ......

任何帮助,将不胜感激

4

2 回答 2

1

这不是很具体到你的问题,但有几件事浮现在脑海:

1)当您使用Apple的JavaApplicationStub时,可能会获得启动过程的诊断输出,如下所示:

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

2) 您可能会查看此处提到的 Apple 示例应用程序OSXAdapter

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

于 2010-06-14T00:42:20.193 回答
1

不幸的是,您不能同时使用 SWT 和 eAWT 的 ApplicationListener。请参阅此SWT 错误。SWT 需要在 JVM 中从 Apple 进行更改,然后我必须更改 SWT 才能使用它。

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

于 2010-06-15T22:38:01.390 回答