如何让Apple Java Extensions(com.apple.eawt)在JDK 7及更高版本上运行?

TL; DR :Apple已经放弃了Java中的原生function支持。 特别是触摸板手势不再起作用。 我写了一个使用JNI完成工作的库。 看看我的答案如下。


我正在寻找几个小时的时间来让Apple Java Extensions在JDK 7或8上工作。我一直在尝试我能想到的一切。 关于这一点的互联网上的所有主题都只是责怪JDK。 我认为这应该是可以解决的,因为它在JDK 6中有效。为了清楚起见:我可以使它在JDK 6中工作,但我不希望这种遗留依赖,因为不是每个将使用我的应用程序的人都有JDK 6或知道如何我要说,安装它。 目标是制作一个可双击的JAR文件,该文件将按照预期的OS Xfunction(菜单栏,手势,关于处理程序等)运行,并安装每个Java版本(大于JDK 6)。

自OS X El Capitan的开发人员预览版发布以来,99%的普通计算机用户无法安装Java 6,因此这不再是我的选择。 我最终决定编写一个本地库,通过JNI向Java通知手势。 该项目运行良好,并在GitHub上托管。

看看这里: https : //github.com/mcourteaux/MultiTouch-Gestures-Java

我碰巧碰到了你的问题并注意到它还没有得到回答。 我有一个我在Mac上开发的Java程序,并注意到当我在Java 7下运行它时,菜单栏,Preferences,Quit和About都使用rt工作正常。 在程序的库文件夹中使用jar,并使用我编写的MacAppMenuHandler类来为这些项提供function。

但是,当我切换到Java 8时,它们不再有效。 虽然今天阅读其他网站提出了Java 8中关于这些文件的“权限”问题,但我不确定是什么问题。

但是,我通过复制rt解决了这个问题。 从Java 7到程序库的jar,它继续为我工作,同时继续在Java 8下开发。

我建议这是解决问题的可能方法之一。

希望这可以帮助。

继续你的项目属性并选择Java Build Path Libraries,你的JRE系统库应该有一个访问规则字段,如图像中显示的那样

在此处输入图像描述

点击编辑按钮并添加访问规则以允许访问com.apple.eawt包。

在此处输入图像描述

我有“捏缩放”的相同问题 – 它适用于java 6但不适用于7或8.我在jdk中遇到了这个似乎有责任的错误。 它说它已在Java 9中修复。