Я пытаюсь использовать CFBundleDocumentTypes для соединения пользовательского расширения файла с моим приложением. Насколько я могу сказать, это, кажется, "работает" - JavaApplicationStub запускает мое приложение, когда я дважды щелкаю по файлу. Однако никакой обратный вызов не регистрируется через события ApplicationListener, которые я устанавливаю в Java.
Я использовал код, перечисленный в ассоциации файлов Значения по умолчанию Набора Установщик Производителя Пакета Java Mac OS X, чтобы сделать ассоциацию файлов, и сама ассоциация файлов кажется прекрасной, но кажется, как будто это - тупик приложения, пытающийся запустить файл, и таким образом перестало работать.
Я добавил код 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...
Любая справка ценилась бы
К сожалению, вы не можете использовать SWT и ApplicationListener eAWT одновременно. См. Эту ошибку SWT . SWT требует изменения от Apple в JVM, а затем мне нужно изменить SWT, чтобы использовать его.
Поскольку вас интересует событие открытия файла, теперь вы можете сделать это полностью в SWT на всех платформах. В SWT версии 3.6 есть новое событие SWT.OpenDocument
, которое срабатывает при двойном щелчке файла для вашего приложения. См. Это сообщение в блоге и выполните поиск по запросу «SWT.OpenDocument».
Это не совсем конкретно для вашего вопроса, но на ум приходит несколько вещей:
1) Поскольку вы используете Apple JavaApplicationStub
, диагностический вывод процесса запуска может быть получен следующим образом:
$ export JAVA_LAUNCHER_VERBOSE $ ./your.app/Contents/MacOS/JavaApplicationStub
2) Вы можете посмотреть пример приложения Apple, OSXAdapter , упомянутый здесь .
3) Вот рабочий пример приложения SWT / Java / Mac.