Как передать файл в качестве аргумента моему приложению Java, созданному с помощью JAR Bundler?
Я хотел бы связать определенный тип файла с моим приложением, поэтому, когда я дважды щелкаю один из файлов этого определенного типа, мое приложение открывается. Это прекрасно работает, но файл, по которому я дважды щелкнул, не передается в качестве аргумента моей программе.
Если я, например, связать свое заявление с txt
файлы и я дважды щелкаю todo.txt
, мое приложение открывается, но я понятия не имею, какие txt
файл, который я дважды щелкнул.
Из того, что я могу прочитать, это то, как это должно работать на OS X, и вместо того, чтобы полагаться на поведение по умолчанию (как это работает, например, на Windows), я должен использовать ApplicationListener.handleOpenFile();
от com.apple.eawt
, Однако, когда я пытаюсь это сделать, мне говорят, что мне нельзя это делать:
Ограничение доступа: тип ApplicationListener недоступен из-за ограничения на требуемую библиотеку /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar
В другом вопросе один парень говорит, что нашел решение на каком-то китайском веб-сайте, а другой говорит, что оно не является законным в соответствии с условиями лицензионного соглашения Java.
Я не могу найти упоминания об этом в библиотеке разработчика Mac OS X, и любые ссылки, которые могут показаться полезными на этом сайте о JAR Bundler, просто отправляют меня на мертвую страницу на сайте разработчика Apple.
Что мне не хватает? Предполагается, что это почти невозможно сделать, хотя это тривиально в других операционных системах?
Это, наверное, стоит упомянуть... так как JAR
файлы не могут быть связаны с программами в OS X, я создал пакет приложений OS X с помощью JAR Bundler; инструмент Apple, разработанный специально для того, чтобы иметь возможность рассматривать приложения Java как родные приложения OS X. Использование это то, что в первую очередь позволило мне связать тип файла с моим приложением.
1 ответ
Я использовал OSXAdapter
для предпочтений, о и выйти из функциональности. Вы можете использовать его интроспективный подход, чтобы избежать ограничений. Как com.apple.eawt.ApplicationListener
устарела, вы можете попробовать com.apple.eawt.OpenFilesHandler
вместо.