Как получить расширения Java Java (com.apple.eawt) для JDK 7 и выше?

TL; DR. Apple отказалась от поддержки встроенных функций в Java. Особенно жесты тачпада не работают. Я написал библиотеку, которая выполняет эту работу с использованием JNI. Взгляните на мой ответ ниже.


Я ищу около часа, чтобы Apple Java Extensions работала над JDK 7 или 8. Я пытаюсь все, о чем я могу думать. Все потоки в Интернете об этом просто обвиняют JDK в этом. Я думаю, что это должно быть разрешимо, потому что оно работало в JDK 6. Для ясности: я могу заставить его работать в JDK 6, но мне не нужна эта зависимость, поскольку не все, кто будет использовать мое приложение, имеют JDK 6 или знают, как для его установки, скажем так. Цель состоит в том, чтобы сделать JAR файл с двойным щелчком, который будет работать, как ожидалось, с функциями OS X (панель меню, жесты, обработчик и т.д.) С каждой установленной версией Java (больше, чем JDK 6).

Ответ 1

Поскольку предварительный выпуск разработчика OS X El Capitan, для 99% средних пользователей компьютеров установить Java 6 стало невозможно, поэтому для меня это уже не вариант. Наконец, я решил написать родную библиотеку, которая будет информировать Java о жестов через JNI. Проект отлично работает и размещен на GitHub.

Взгляните на это здесь: https://github.com/mcourteaux/MultiTouch-Gestures-Java

Ответ 2

Я просто столкнулся с вашим вопросом и отметил, что он еще не получил ответа. У меня есть Java-программа, которую я разрабатывал на Mac, и отметил, что когда я запускал ее под Java 7, панель меню, "Настройки", "Выход" и "О всех" отлично работали с использованием rt. jar в папке программных библиотек и с использованием класса MacAppMenuHandler, который я написал для обеспечения функциональности для этих элементов.

Однако, когда я перешел на Java 8, они больше не работали. Я не уверен, что проблема в том, что сегодня читая другие веб-сайты, предлагайте проблему с разрешениями на Java 8 в отношении этих файлов.

Однако я решил проблему, скопировав rt. jar из Java 7 в библиотеки программ, и он продолжает работать для меня, продолжая развиваться в Java 8.

Я предлагаю это как одно из возможных решений проблемы.

Надеюсь, что это поможет.

Ответ 3

Перейдите в свой проект "Свойства" и выберите "Библиотеки путей Java", ваша системная библиотека JRE должна иметь поле "Правила доступа", подобное тому, которое отображается на изображении

enter image description here

Нажмите кнопку "Изменить" и добавьте правило доступа, чтобы разрешить доступ к пакету com.apple.eawt.

enter image description here

Ответ 4

У меня была такая же проблема с "щепоткой для увеличения" - она ​​работает в java 6, но не с 7 или 8. Я наткнулся на эту ошибку в jdk, который, как представляется, несет ответственность. Он говорит, что он исправлен в Java 9.