如何在 Mac OSX 上使用 JDK 7?

Posted

技术标签:

【中文标题】如何在 Mac OSX 上使用 JDK 7?【英文标题】:How do I use JDK 7 on Mac OSX? 【发布时间】: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? 【参考方案1】:

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

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

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

此版本有一些限制,最明显的是不支持 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,请打开名为 eclipse 的 alias 文件,而不是名为 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

【讨论】:

“错误:没有适用于 caskroom/versions/java7 的 cask” @jrochkind 也许你的caskroom/versions 已经过时了?肯定在这里:github.com/caskroom/homebrew-versions/blob/master/Casks/… @jrochkind 在运行安装命令之前尝试运行brew tap caskroom/versions @jrochkind 如果这不起作用,请查阅木桶文档,或提出问题:github.com/caskroom/homebrew-cask【参考方案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

【讨论】:

接受的这个问题的答案已经过时了。这似乎是目前安装 Java 7 的最佳方式。 这个木桶已被移除(参见:github.com/caskroom/homebrew-versions/pull/3914)。建议的替代方法是使用 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/”,然后查了!我又回来做生意了。

【讨论】:

以上是关于如何在 Mac OSX 上使用 JDK 7?的主要内容,如果未能解决你的问题,请参考以下文章

Mac OSX - 如何在bash_profile中配置全局环境变量

如何在 mac osx 10.11 El Capitan 上安装 php 7.4 版? [复制]

如何从 Windows 7 pc 访问 Mac Osx 上的 localhost XAMPP?

如何在 Mac OSX 10.6 上卸载 wxpython 2.8

如何在Mac OS X Yosemite上安装 jdk 1.6 开发环境

如何在 OS X 10.10.3 上运行 Xcode 7 beta 5?