【问题标题】:How to get Apple Java Extensions (com.apple.eawt) work on JDK 7 and higher?如何让 Apple Java Extensions (com.apple.eawt) 在 JDK 7 及更高版本上工作?
【发布时间】:2014-08-20 04:03:09
【问题描述】:

TL;DR:Apple 已放弃对 Java 的原生功能支持。特别是触摸板手势不再起作用。我编写了一个使用 JNI 完成这项工作的库。看看我下面的答案。


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

【问题讨论】:

    标签: java macos cocoa java-native-interface


    【解决方案1】:

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

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

    【讨论】:

    • 同意。但是 lib 建议将 .so 文件复制到 /。一些用户没有这样做的权限。您的解决方案是否可以捆绑为 jar,或者每次安装都需要手动调整系统?
    • 可以尝试改用 File.createTempFile 并结合此 hack:stackoverflow.com/questions/15409223/… 但这似乎不是您想做的事情。不过,我相信 JavaFX 支持跨平台的多点触控输入处理。
    【解决方案2】:

    我只是碰巧遇到了您的问题,并注意到尚未回答。我有一个我一直在 Mac 上开发的 Java 程序,并注意到当我在 Java 7 下运行它时,菜单栏、首选项、退出和关于所有使用 rt 都可以正常工作。 jar 在程序的库文件夹中,并使用我编写的 MacAppMenuHandler 类为这些项目提供功能。

    但是,当我切换到 Java 8 时,它们不再起作用。我不确定问题是什么,尽管今天阅读其他网站表明 Java 8 中关于这些文件的“权限”问题。

    但是,我通过复制 rt. jar 从 Java 7 到程序的库中,它继续为我工作,同时继续在 Java 8 下开发。

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

    希望这会有所帮助。

    【讨论】:

    • 哇,这看起来是个了不起的消息。你有什么版本的 Java 7?哪个开发商?甲骨文?一些开源替代品?
    • 我正在运行来自 Oracle 的 Java 7 和 Java 8 标准问题,而不是来自开源或其他替代 Java。 rt。 jar 是:Java 1.7_051
    • 您是否尝试过触摸板手势是否也适用于 Java 7?似乎确实,菜单栏和首选项一样有效。但手势不会。但是,我必须使用命令行参数才能使菜单栏正常工作。
    • 天哪....我总是这样做:if (System.getProperty("mjr.version") != null) 然后我做了 OS X 调整。只需删除修复它的条件...这是与 Java 7 的不兼容。现在,只有手势不起作用。
    • 我仍然不确定为什么无法访问 rt。 jar 用于 Java 8 的 OS X 组件,并且所有内容都按照 OS X 的预期显示。我还没有看到任何关于它的额外讨论。
    【解决方案3】:

    继续您的项目属性并选择 Java 构建路径库,您的 JRE 系统库应该有一个访问规则字段,就像图像中显示的那样

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

    【讨论】:

      【解决方案4】:

      我在“捏缩放”方面遇到了同样的问题 - 它适用于 java 6,但不适用于 7 或 8。我在 jdk 中遇到了 this bug,这似乎是负责任的。它说它已在 Java 9 中修复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-06
        • 2015-03-04
        • 2016-04-07
        • 1970-01-01
        • 2014-07-11
        • 2012-12-09
        • 2019-04-21
        相关资源
        最近更新 更多