Как передать файл в качестве аргумента моему приложению Java, созданному с помощью JAR Bundler? - PullRequest
8 голосов
/ 21 сентября 2011

Я хотел бы связать определенный тип файла с моим приложением, поэтому, когда я дважды щелкаю один из файлов этого определенного типа, мое приложение открывается.Это прекрасно работает, но файл, по которому я дважды щелкнул, не передается в качестве аргумента моей программе.

Если я, например, связываю свое приложение с файлами txt, и я дважды щелкаю todo.txt,мое приложение открывается, но я понятия не имею, какой файл txt я дважды щелкнул.

Из того, что я могу прочитать, это то, как предполагается для работы на OS X, и вместо этогополагаться на поведение по умолчанию (как это работает, например, в Windows), я должен использовать ApplicationListener.handleOpenFile(); из com.apple.eawt.Однако, когда я пытаюсь это сделать, мне говорят, что я не могу это сделать:

Ограничение доступа: тип ApplicationListener недоступен из-за ограничения на требуемую библиотеку / систему / библиотеку/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar

В другой вопрос здесь , один парень говорит, что нашел решение по некоторымКитайский веб-сайт , а другой говорит, что он не является законным в соответствии с условиями лицензионного соглашения Java.

Я не могу найти упоминания об этом в Mac OS X Developer Library , илюбые ссылки могут показаться полезными на этом сайте о JAR Bundler просто отправляет мне мертвую страницу на сайте разработчика Apple .

Чего мне не хватает?Предполагается, что это почти невозможно сделать, хотя это и тривиально в других операционных системах?

Вероятно, стоит упомянуть ... , поскольку файлы JAR не могут быть связаны спрограммы на OS X, я создал OS X Application Bundle , используя JAR Bundler ;инструмент Apple, разработанный специально для того, чтобы иметь возможность рассматривать приложения Java как родные приложения OS X.Именно это позволило мне связать тип файла с моим приложением.

1 Ответ

2 голосов
/ 21 сентября 2011

Я использовал OSXAdapter для настроек, сведений о и выхода из функции.Вы можете использовать его интроспективный подход, чтобы избежать ограничений.Поскольку com.apple.eawt.ApplicationListener устарело, вместо этого вы можете попробовать com.apple.eawt.OpenFilesHandler.

...