【问题标题】:How do I make use of the apple extensions for Java using Eclipse如何使用 Eclipse 使用 Apple 的 Java 扩展
【发布时间】:2014-05-22 14:57:06
【问题描述】:

我可以导入包,但似乎没有任何类。另一方面,我也找不到文档。

我一直在努力让我的 Java 应用程序在 MAC 上正常工作。我一直在使用 Windows 进行开发,并且无法访问 MAC,因此我得到了一些志愿测试人员的帮助。问题在于 Apple Java 扩展。我花了一段时间才发现它们甚至存在,然后我发现(通过这里)关于存根库以允许在 Windows 上进行开发。但它从未对我的测试人员有用。我崩溃了,买了一台二手 Mac,以为它会在几个小时内解决。笑话在我身上,我仍然被困住:-)

我找到了很多信息,但仍然无法正常工作。

各种网站和教程都有类似这个问题的指针,指向 Apples 网站上不存在的文档: https://stackoverflow.com/questions/21512843/api-docs-for-apple-eawt-java-extensions

听起来 Oracle 已经接管了库等,但我使用的是 Java 1.6。我宁愿让我的应用程序与 1.6 及更高版本一起工作,所以我希望让它与我的 mac 安装的 JDK 一起工作。 Can Java 7 use Apple Java Extensions?

当然,我发现的教程使用的是已弃用的 API。但是 API 文档的链接又被破坏了: What's the alternative to using the now deprecated com.apple.eawt.ApplicationAdapter in Java Swing apps on the Mac?

现在在我的 Eclipse IDE 中,我可以导入 com.apple.eawt 并且事情似乎很高兴,但我希望在那里找不到任何类。我错过了什么? Mac 开发总是这么难吗?

【问题讨论】:

  • 嗯,有趣我不认为我在这台机器上实际上有 JDK。那会很糟糕。但是我找不到要下载的 1.6 JDK。如果唯一的选择是只使用 1.7 并继续前进,我将不得不考虑这一点。从头开始,这里有一个 JDK,Eclipse 知道它。我的印象来自终端 java -version

标签: java eclipse macos


【解决方案1】:

关于允许在 Windows 上开发的存根库

您的类路径中没有存根库吗?存根库只能在 OS X 以外的操作系统上使用。否则,在 Windows 上运行相同的代码时,您可能会遇到运行时错误。确保在 OS X 中运行时不要在类路径中包含存根库,但在 Windows 中运行时包含。

使用现在已弃用的替代方法是什么 Mac 上 Java Swing 应用程序中的 com.apple.eawt.ApplicationAdapter?

这是一个例子:

public class AppleHandler implements com.apple.eawt.OpenFilesHandler, com.apple.eawt.AboutHandler, com.apple.eawt.PreferencesHandler, com.apple.eawt.QuitHandler,
        com.apple.eawt.OpenURIHandler {



    public AppleHandler() {
        com.apple.eawt.Application app = com.apple.eawt.Application.getApplication();
        app.setAboutHandler(this);
        app.setPreferencesHandler(this);
        app.setQuitHandler(this);
        app.setOpenFileHandler(this);
        app.setOpenURIHandler(this);
    }



    @Override
    public void openFiles(com.apple.eawt.AppEvent.OpenFilesEvent ofe) {

    }



    @Override
    public void handleAbout(com.apple.eawt.AppEvent.AboutEvent ae) {

    }



    @Override
    public void handlePreferences(com.apple.eawt.AppEvent.PreferencesEvent pe) {

    }



    @Override
    public void handleQuitRequestWith(com.apple.eawt.AppEvent.QuitEvent qe, com.apple.eawt.QuitResponse qr) {

    }



    @Override
    public void openURI(com.apple.eawt.AppEvent.OpenURIEvent oue) {

    }
}

编辑:我在 OS X 10.8 上使用 Java 6。这是我在 Eclipse 中看到我的 JDK 的方式


.

【讨论】:

  • 对仍在路径中的存根进行了很好的思考,但没有。在我的 Mac 上,我有一个全新安装的 Eclipse 和一个我从教程中获取并修改的示例应用程序。我遇到的问题是任何类路径中都没有 AppEvent、OpenFilesHandler。现在已经说过,在复制您的示例代码后(感谢 BTW)我在 Eclipse 编译期间看到以下错误“访问限制:由于对所需库 /System/Library/Java/JavaVirtualMachines/1.6 的限制,无法访问类型 OpenFilesHandler .0.jdk/Contents/Classes/ui.jar"
  • 无赖,当我查看 ui.jar 的访问限制时,没有提到 com.apple.eawt* 但是当我查看 .jar 的内容时,它们就在那里。我需要的所有东西。所以这让我有了 - 究竟什么是让我的应用程序可用的正确方法?感谢您提供更多信息 - 我现在有更多要搜索的内容。
  • @IanLeslie 听起来您的 Eclipse 存在一些配置问题。有关我所看到的内容,请参见上面的屏幕截图。请注意,这应该是默认配置。我无需进行任何更改即可使其正常工作。
  • 谢谢@whiskeyspider。我认为您对配置问题是正确的。我的 JRE 定义面板看起来和你的完全一样——内部版本号等等。但是,如果这有什么不同,我正在运行 10.9.2。我会看看配置的角度,希望能尽快尝试你的示例代码。
  • 先确定一些好消息。通过向项目添加访问规则,我最终能够在 Eclipse 下编译它。在构建路径下,jvm 具有禁止使用 com.apple 包和子包的访问规则。我添加了访问规则“com/apple/eawt/**”,现在 Eclipse 很乐意编译代码。
猜你喜欢
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 1970-01-01
  • 2019-06-12
  • 1970-01-01
相关资源
最近更新 更多