Как передать файл в качестве аргумента моему 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 Developer Library, и любые ссылки, которые могут показаться полезными на этом сайте о JAR Bundler просто посылает меня на мертвую страницу на сайте Apple's Developer site.

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

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

8
задан Community 23 May 2017 в 11:44
поделиться