JavaApplicationStub с CFBundleDocumentTypes - PullRequest
1 голос
/ 14 июня 2010

Я пытаюсь использовать CFBundleDocumentTypes, чтобы связать пользовательское расширение файла с моим приложением.Насколько я могу судить, похоже, что это "работает" - JavaApplicationStub запускает мое приложение, когда я дважды щелкаю файл.Однако обратный вызов не регистрируется через события ApplicationListener, которые я настраивал в java.

Я использовал код, указанный в Установить связывание файлов по умолчанию Mac OS X Установщик создания пакетов Java , чтобы выполнить сопоставление файлов, и само сопоставление файлов выглядит нормально, но кажется, что это так.заглушка приложения пытается запустить файл, и, следовательно, не удается.

Я добавил код Apple ApplicatinListener в свое 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 ...

Любая помощь будет признательна

Ответы [ 2 ]

1 голос
/ 16 июня 2010

К сожалению, вы не можете использовать SWT и ApplicationListener eAWT одновременно. Смотрите это SWT ошибка . SWT нужно изменить от Apple в JVM, а затем я должен изменить SWT, чтобы использовать его.

Поскольку вас интересует событие открытия файла, теперь вы можете сделать это полностью в SWT на всех платформах. В 3.6 SWT есть новое событие SWT.OpenDocument, которое сработает при двойном щелчке файла вашего приложения. Смотрите это сообщение в блоге и ищите "SWT.OpenDocument".

1 голос
/ 14 июня 2010

Это не очень специфично для вашего вопроса, но на ум приходит несколько вещей:

1) Поскольку вы используете Apple JavaApplicationStub, диагностический вывод из процесса запуска может бытьполучается следующим образом:

$ export JAVA_LAUNCHER_VERBOSE
$ ./your.app/Contents/MacOS/JavaApplicationStub

2) Вы можете посмотреть пример приложения Apple, OSXAdapter , упомянутый здесь .

3) Вотрабочий пример приложения SWT / Java / Mac.

...