【问题标题】:How do I use JDK 7 on Mac OSX?如何在 Mac OSX 上使用 JDK 7?
【发布时间】:2011-09-10 04:15:07
【问题描述】:

我想使用此链接中提到的 WatchService API: http://download.oracle.com/javase/tutorial/essential/io/notification.html

阅读后,我发现 WatchService 是为 JDK 7 计划的 NIO 类的一部分。因此,它是 beta 形式。没关系。

http://jdk7.java.net/download.html 有我下载并解压的 JDK。我有一堆文件夹。我不知道该怎么处理它们。

然后,我阅读了更多内容,发现一些不错的人将 JDK 7 创建为二进制文件,因此像我这样的人可以轻松安装它。它被称为 Open JDK: http://code.google.com/p/openjdk-osx-build/

所以,我下载了 .dmg 文件并安装了它。然后我打开“Java Preference”,看到OpenJDK7可用。

所以,现在我觉得我可以开始尝试 WatchService API。从第一个链接中的教程中,作者给出了一个 .java 文件,首先对其进行测试并确保它正在运行。这是文件的链接: http://download.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java

所以,我启动Eclipse(实际上我使用STS)并创建一个新的Java项目并在“使用执行环境JRE:”中选择JaveSE-1.7。在 src 文件夹下,我复制粘贴了 WatchDir.java 文件。

而且我仍然看到大量弯曲的红线。所有的“import.java.nio.*”都是红色的,我无法将其作为 Java 应用程序运行。

我需要做什么?

【问题讨论】:

  • 可以在控制台上运行编译吗?
  • 你的意思是:$javac WatchDir.java 然后是 $Java WatchDir?我会试试的。谢谢!虽然我希望它可以在 Eclipse IDE 中使用。
  • 从今天开始有正式的Oracle版本-Java SE 7u4
  • 确保您使用的是 64 位 Eclipse。没有运气在 1.7 jvm 上运行 32 位的任何选项。
  • 更新:Java 7 是 now at end-of-life。要继续使用 Java 的长期支持 (LTS) 版本,请参阅:How to install Java 8 on MacObtain Java 11 for macOS?

标签: macos java java-7


【解决方案1】:

这就是我如何让 1.7 与 Eclipse 一起工作。希望对你有帮助。

  1. 我下载了最新的 OpenJDK 1.7 通用(32/64 位)JDK 来自http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 的 Mac OS/X 分支
  2. 将 jdk 复制到 /Library/Java/JavaVirtualMachines/ 旁边的 默认1.6.0一个
  3. 在 Eclipse > Preferences > Java > Installed JREs 添加一个新的 JRE,类型为 MacOS X VM,并将 home 设置为 /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home 和 命名 Java SE 7 (OpenJDK)
  4. 点击完成
  5. 将添加的 JRE 设为默认

应该是这样的:)

【讨论】:

  • 感谢我的 elcipse 完全挂了.. 所以我尝试使用 sdk 1.7 完美地工作! :=)
  • 该项目 (openjdk-osx-build) 已关闭,不再提供任何下载。
  • 第二步可以是:运行下载的jdk-7u40-macosx-x64.dmg,它会自动添加文件到路径
  • 将已安装的 JRE 添加到 Eclipse 时,Eclipse 还可以“搜索”已安装的 JRE。这就是我找到现有 1.7 JDK 安装的方式。
  • 请注意,oracle jdk 1.7 安装程序会为您将 VM 放入 /Library/Java/JavaVirtualMachines/(2014 年 3 月)
【解决方案2】:

Oracle 已发布JDK 7 for OS X

【讨论】:

  • 我将使用最新信息更新答案。如果这不是正确的答案,请告诉我。谢谢。
  • @Yko - 查看 BasilBourque 的最完整信息(或我的第一个 Oracle JDK7 版本 4)
  • 请注意,为了让应用程序使用 Oracle 的 Java 1.7 来支持 Apple 的 Java 1.6,我必须运行 /Library/Java/JavaVirtualMachines/1.7.0.jdk 并将“Java SE 7”拖到“常规”列表的顶部“ 标签。这也将使javac 在运行终端时指向Java 1.7 版本。
  • Oracle 的 JDK7 不适用于 Snow Leopard。它说它只支持Lion。
  • @Sangdol - 是的,Oracle 的 Java 实现仅在 Lion 及更高版本上运行。正如我对这个问题的回答中所述。
【解决方案3】:

Java 9、10、11

几年前,Apple 加入了 OpenJDK 项目,将其以前专有的 macOS 特定 JVM 代码免费开源。 Apple 停止分发他们自己品牌的 JVM/JDK,依靠 Oracle 的品牌版本来包含 macOS 版本。

Oracle 最近宣布,他们打算将其 Oracle 品牌的 JVM 版本与 OpenJDK 项目的功能相提并论,并具有几乎相同的代码库。该公司甚至将他们以前的商业工具Flight RecorderMission Control 捐赠给了 OpenJDK 项目。这是向新的快速“发布火车”计划转变的一部分,该计划可预测 Java 和 OpenJDK 的预定版本控制。值得注意的是,免费公开更新的时间现在缩短了。请参阅 this 2017-09 announcementthis posting by Mark Reinhold

因此,Java 的 macOS 用户可以选择 Java 实现的供应商。至此,至少有三个源码是基于 OpenJDK for macOS 的:

  • JDK 和 JRE 的 Oracle releases,提供可选的付费支持。
  • Azul Systems 发布:
    • Zulu 一系列免费的 JVM,提供可选的付费支持。
    • Zing 一系列具有特殊功能(例如备用垃圾收集器)的商业 JVM。
  • OpenJDK source code,自行编译和安装(可能对我们大多数人来说不实用)。

同时,IBM 将 JVM 代码捐赠给了 Eclipse 基金会,现在位于 OpenJ9 项目中。我想知道他们是否也支持 macOS 版本,不过现在说还为时过早。

就我个人而言,我目前正在 macOS High Sierra 上成功使用来自 Azul 的 Java 10.0.1 的 Zulu 版本和 IntelliJ 2018.2 来生成带有 Vaadin 的 Java 支持的 Web 应用程序。

安装/拆卸

Oracle 和 Azul 都提供了非常易于使用的安装程序来在您的 Mac 上安装 JVM/JDK。使用 Terminal.app(或等效的)输入并运行来验证您的安装:

java -version

您将在驱动器根目录的此文件夹中找到 Java 安装(而不是在您的主文件夹中):

/库/Java/JavaVirtualMachines

每个供应商的每个版本都可以在那里找到,在一个带标签的嵌套文件夹中。您可以删除任何安装,只需删除该版本的嵌套文件夹并在提示时提供您的系统密码。

Java 8

您可以download the Java Development Kit (JDK) 获取Java 8 获取supported Mac OS X 版本:

  • 山狮 (10.8.3+)
  • 小牛队 (10.9)
  • 优胜美地 (10.10)
  • 埃尔卡皮坦 (10.11)

您安装的每个 JVM 版本都可以在这里找到:

/Library/Java/JavaVirtualMachines

有关更多说明和常见问题解答,请参阅this Oracle Guide

Java 7

对于自更新 4 以来的每个 Java 7 版本,Mac 版本已与其他平台一起准备好。在具有 64 位硬件的 Mac 上运行 Lion (10.7.3+)、Mountain Lion (10.8.3+) 和 Mavericks (10.9.x)。

Oracle announced 于 2012 年 4 月 26 日在 Mac OS X (Lion) 上为 Java SE 7 Update 4 正式发布的 JDK。 不再需要本页讨论的技巧

根据these instructions,安装很简单:

  1. 从 Oracle 网站上的 the usual place 下载。
  2. 安装 DMG。
  3. 运行安装程序。

此版本有一些限制,最明显的是不支持 Java Web Start 和用于网络浏览器的 Java 插件。预计将在今年晚些时候获得这种支持。

安装后,阅读JDK for Mac ReadMe. 最重要的是,如果您希望 Java 7 成为默认设置,请将其拖到 Utilities 文件夹中的 Java Preferences 应用程序的列表顶部。

Mac OS X 可以轻松同时支持多个 JVM。现在每个都可以在这里找到:

/Library/Java/JavaVirtualMachines

祝贺 Apple 和 Oracle 团队取得的成就。看到 Mac OS X 被列为“Certified System Configuration”,这个极客感到非常兴奋。

提示:要在仅安装 Java 7 的 Mac 上启动 Eclipse,请打开名为 eclipsealias 文件,而不是名为 Eclipse.app 的文件。

Java 6

Apple 继续为所有版本的 Mac OS X 提供 Java 6 的最新实现,直至 Mountain Lion。

如果您执行需要 Java 的操作,例如在 Terminal.app 中键入“java -version”,则会出现一个对话框,提示您为您安装 Java。如果您接受,安装会自动进行,类似于 Apple 的其他“软件更新”。

您会发现 Java 安装在此位置,与 Java 7 和 8 不同:

/System/Library/Java/JavaVirtualMachines

截至 2013 年 2 月,Java 6 与 Oracle 有 reached end-of-life(除非您与 Oracle 签订了商业支持协议)。所以你应该迁移到 Java 7 或 8。

测试新版本

在 Terminal.app 中,键入 java -version 以验证哪个版本是当前默认版本。

删除旧版本

安装新版本后,您可能需要访问上述文件夹以删除旧版本。将文件夹移至废纸篓,并提供您的系统密码以完成移动。


顺便说一句,Apple 为开发人员在 OS X 上与 Java 相关的技术问题提供了mailing list

【讨论】:

  • 谢谢,这对我很有用。也需要在偏好中更改它。
  • @Tony:是的,在第 4 段中提到了更改首选项。
  • 不起作用。我运行安装程序并报告“成功”,但似乎没有实际安装任何内容。 /System/Library/Java/JavaVirtualMachines 仅包含 Java 6 JDK。
  • @aroth - (a) 查看/Library/Java/JavaVirtualMachines(不是/System)。 (b) 您是否阅读了 Oracle 的安装文档 ReadMe,并按照我上面的回答中所述设置了 Preferences
  • 使用 Java 7 r21,我看到 /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/。 Java 控制面板现在可以通过 System Preferences (OSX 10.8.3) 访问
【解决方案4】:

在 Mac 上安装 Java 7 的一种简单方法是使用 Homebrew,这要归功于 Homebrew Cask 插件(现在默认安装)。

运行此命令以安装 Java 7:

brew cask install caskroom/versions/java7

【讨论】:

【解决方案5】:

获取木桶

brew tap caskroom/cask

安装java7:

brew tap caskroom/versions
brew cask install java7

(我很难在 oracle 网站上找到 java7 的下载链接,因为他们只是“推荐”java8)

编辑 2018 年 1 月 (正如 Ankur 指出的那样):

使用zulu7 桶。 Zulu 是由 Azul Systems 生产的经过认证的 OpenJDK 版本,应该存在很长时间(他们甚至仍然提供 JDK6 版本)。

brew cask install caskroom/versions/zulu7

【讨论】:

【解决方案6】:

我知道有些人可能会因为我重新打开旧帖子而打我,但如果你觉得这样做,我只是希望这可以帮助其他尝试在 Mac OS 上设置 JDK 7(使用 IntelliJ)的人。

为了在我的机器上运行它,我所做的是:

  • 按照Oracle JDK7 Mac OS X Port 上的说明进行常规安装
  • 在 IntelliJ 中打开/创建新项目,以便您可以添加新的 SDK(文件 > 项目结构)
  • 选择平台设置 > SDK,按“+”(加号)添加新的 SDK
  • 选择 JSDK 并导航到 /Library/Java/JavaVirtualMachines/JDK 1.7.0 Developer Preview.jdk/Contents/Home。 不要将其误认为 /Users/YOUR_USERNAME/Library/Java/。这将链接来自“lib”目录的 4 个 JAR(dt.jar、jconsole.jar、sa-jdi.jar 和 tools.jar)
  • 您还需要从 /Library/Java/JavaVirtualMachines/JDK 1.7.0 Developer Preview.jdk/Contents/Home/jre/lib 添加 JAR(charsets.jar、jce.jar、JObjC.jar、jsse.jar、 management-agent.jar、resources.jar 和 rt.jar)

【讨论】:

    【解决方案7】:

    您可能仍需要将 JDK 添加到 Eclipse (STS) 中。仅仅因为 JDK 在系统上并不意味着 Eclipse 知道在哪里可以找到它。

    转到 首选项 > Java > 已安装的 JRE

    如果没有 1.7 JDK 的条目,请添加它。您必须将 Eclipse 指向您安装 1.7 JDK 的位置。

    如果 Eclipse 找不到与 1.7 兼容的 JRE,我猜它只是使用您的默认 JRE,并且可能仍指向 Java 1.6,这会导致您的红色波浪线。

    【讨论】:

    • 好电话!但我需要一点进一步的指导。我进入 Installed JREs -> Add 并指向 .../jdk1.7.0/jre ,它找到了一堆 JAR 文件。我点击完成。愉快地尝试构建,但现在它说 .../jdk1.7.0/jre/bin/java: 无法执行二进制文件。这是什么意思?
    • 我不太确定。您可以尝试将 eclipse 指向基本 jdk 目录而不是 jre 目录。我认为这就是我通常在 Windows 上完成的方式,尽管我从未关闭过 Mac 上的默认 JDK。如果这不起作用,您可以尝试安装不同的 JDK 7 发行版 - openjdk-osx-build 站点上提供了一些不同的发行版,也许您选择了一个与您的系统不兼容的发行版?
    • 我试过了。它给了我“目标不是 JDK 根。找不到系统库”的错误
    【解决方案8】:

    从 oracle 安装 1.7jdk 后,我将 bash 脚本更改为添加:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home
    

    然后运行java -version 显示正确的版本。

    【讨论】:

      【解决方案9】:

      Netbeans 怎么样,这里有一篇文章如何使用 NB7 进行设置:

      http://netbeanside61.blogspot.com/2011/06/downloading-openjdk7-binary-for-mac-os.html

      也许 Eclipse 的类似步骤。

      【讨论】:

      • 我以前用过netbeans,我会试一试。感谢您的链接。
      【解决方案10】:

      截至 4 月 27 日,有一个 offical Oracle release of Java SE 7u4. 下载磁盘映像并运行安装程序 - 然后查看 Mac readme

      【讨论】:

        【解决方案11】:

        截至 2017 年 12 月,之前发布的链接已失效,但仍可从 Oracle 存档下载 JDK 7(需要登录):

        http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

        【讨论】:

          【解决方案12】:

          peter_budo 的说明效果很好。我必须将 /Library/Java/JavaVirtualMachines/JDK 1.7.0 Developer Preview.jdk/Contents/Home/jre/lib/ 下的 jar 添加到我的 IntelliJ 项目库中。现在它就像一个魅力。请注意,我不需要我的 IDE 本身在 1.7 下运行;相反,我只需要能够针对 1.7 进行编译和运行。我很可能会继续使用 Apple 的 JRE 来运行 IDE,因为它在图形例程(Swing、AWT)方面可能更稳定。和 OP 一样,我非常热衷于测试新的 NIO2 API。到目前为止看起来不错。谢谢,彼得。

          【讨论】:

            【解决方案13】:

            在 Lion 上对我有用的是从 Oracle 安装 JDK7_u17,然后编辑 ~/.bash_profile 以包括: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home

            【讨论】:

              【解决方案14】:

              现在,使用命令

              2020 年更新:04

              使用 homebrew 运行安装 Java7:

              brew tap homebrew/cask-versions
              brew cask install java7
              

              希望对您有所帮助。

              【讨论】:

                【解决方案15】:

                我需要调整@abe312 的答案,因为最近brew 发生了一些变化。

                我安装了zulu7并通过运行设置了JAVA_HOME:

                brew install --cask homebrew/cask-versions/zulu7
                echo "export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-7.jdk/Contents/Home" >> ~/.zshrc
                

                我必须输入密码才能安装 zulu7。如果您使用不同的 shell,您可能需要修改最后一个命令。

                【讨论】:

                  【解决方案16】:

                  我更新到 Yosemite,Android Studio 不会清理我的项目或在虚拟或真实设备上运行它们,因为以下错误:

                  Failed to complete Gradle execution.Cause:Supplied javaHome is not a valid folder. You supplied: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
                  

                  经过一些研究和故障排除,我发现指向“/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home”的JDK文件不存在; “/System/Library/Java”中缺少所有“JavaVirtualMachines/1.6.0.jdk/Contents/Home”。所以,我将“JavaVirtualMachines/1.6.0.jdk/Contents/Home”从“/Library/Java/”复制到“/System/Library/Java/”,然后查了!我又回来做生意了。

                  【讨论】:

                    猜你喜欢
                    • 2011-09-18
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-06-09
                    • 2012-10-12
                    • 2012-11-28
                    • 1970-01-01
                    • 2012-10-16
                    • 1970-01-01
                    相关资源
                    最近更新 更多