在 OS X 10.9 (Mavericks) 上安装 Java

Posted

技术标签:

【中文标题】在 OS X 10.9 (Mavericks) 上安装 Java【英文标题】:Installing Java on OS X 10.9 (Mavericks) 【发布时间】:2013-11-01 05:56:41 【问题描述】:

我已经在Mac OS X v10.8(Mountain Lion)上安装了JDK。当我将它升级到Mac OS X v10.9(小牛队)并在终端中运行java -version时,它显示:

不存在 Java 运行时,正在请求安装。

然后我在我的 Mac 上手动安装了 JDK (1.7)。似乎安装工作正常。安装完成后,我打开终端并输入java -version。它也显示了同样的错误:

不存在 Java 运行时,正在请求安装。

我该如何解决这个问题?

【问题讨论】:

我不知道终端有什么问题,但我运行 eclipse 并且所有项目都在小牛中编译正常 老的java启动器好像只支持jdk 1.6,但是mavericks默认没有安装1.6。 您安装了 java 6,而不是 OP 最初暗示他们需要的 java 7。我对如何实现该解决方案感兴趣。此外,这里还必须有一种“替代”方法,直接解决来自终端的反馈。 这对 Java 6 来说很棒,但是如何让 Java 7 工作呢? 添加了安装 Java 7 JRE 并让它在终端中运行的潜在答案:***.com/a/19582689/346286 【参考方案1】:

新的Mavericks (10.9) 向我显示“请求安装”,但什么也没发生。

解决方案是手动下载并安装 OS X 的官方 Java 包,该包位于 Java for OS X 2013-005

更新:如下面的 cmets 所述,同一个包有一个更新版本:

Java for OS X 2014-001

Java for OS X 2014-001(更正上面的截止日期)

Java for OS X 2014-001 包括安装改进,并取代了所有以前的 Java for OS X 版本。此软件包安装 Java for OS X 2013-005 中包含的相同版本的 Java 6。

【讨论】:

对我来说也一样。另一种选择是从 Oracle 安装 Java。大家觉得哪一个更好呢? Oracle 的 Java 更新速度似乎比 Apple 快。 但是这个给你JDK 6。我们怎么能直接使用JDK 6呢? @Shawn Apple 禁用已安装的 JDK 7。但您可以从这里获取一些常见问题解答并安装:java.com/en/download/faq/java_mac.xml 但我没有尝试过。 如果你同时安装了java6和java7,你可以在你的shell中选择v6:export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 为什么要在 64 位操作系统上使用 32 位 java?小牛下64位java其实比32bit快。【参考方案2】:

如果你只想从 Oracle 安装最新的官方 JRE,你可以到那里,安装它,然后在终端中导出新的 JAVA_HOME。

打开您的终端 java -version 给你一个错误和一个弹出窗口 在http://www.oracle.com/technetwork/java/javase/downloads/index.html 上获取 JRE dmg 安装它 在您的终端中,输入:export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" java -version 现在给你java version "1.7.0_45"

这是我发现安装最新 JRE 的最干净的方法。

您可以在您的.bashrc 中添加export JAVA_HOME 行,以便在您的终端中永久拥有java

echo export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\" >> ~/.bashrc

【讨论】:

我认为将JAVA_HOME 定义为明显是浏览器插件而不是真正的VM 听起来有点可疑。当您安装 XCode 命令行工具时,您将获得一个用于获取正确路径的工具,/usr/libexec/java_home。见developer.apple.com/library/mac/documentation/Darwin/Reference/…。 @Ilkka - 听起来确实很可疑,但这实际上是安装 Oracle 的 JRE 的地方。 Apple 的 java(止于 java 6)与 oracle 的混合并不像人们喜欢的那样完美 我的一位同事(不幸的是,这里没有添加 cmets 所需的声誉)想补充一点,JAVA_HOME 设置应该是export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home" 我从 Oracle 安装了 jdk7u45,并且仍然在我的 bash 配置文件中使用 export JAVA_HOME=$(/usr/libexec/java_home)。 jdk7u45 工作得非常好,包括 java 系统偏好面板。现在我正在升级到 jdk7u51。 我必须将 export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" 添加到 ~/.profile 而不是 ~/.bashrc 或 ~/.bash_profile 才能完成这项工作。【参考方案3】:

下载适用于 Java 7 的 JDK 的正确位置是 Java SE Downloads

据我所知,上面提供的所有其他链接都提供 JRE 或 Java 6 下载(顺便说一下,如果您想运行 Eclipse 或其他 IDE,例如 IntelliJ IDEA,您将需要 JDK , 不是 JRE)。

关于 IntelliJ IDEA - 它仍然会要求您安装 Java 6,因为它显然需要一个较旧的类加载器或其他东西:只需在弹出对话框时按照说明操作,它就会在正确的位置安装 JDK 6。

之后,您需要执行上述答案中提到的sudo ln -snf

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents \
    /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

(复制到这里,因为有人提到“上面”最终可能没有意义,因为答案会重新排序)。

我还将JAVA_HOME 设置为指向jdk_1.7.0_xx.jdk 的安装位置:

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

然后将其添加到您的PATH

export PATH=$JAVA_HOME/bin:$PATH

另一种选择是在 Apple 疯狂的超链接迷宫中摸索,但老实说,生命太短暂,无法打扰。

【讨论】:

请参阅my comment to another answer,了解获得该路径的更好方法。 由于这个答案有更多的赞成票,所以上面答案中sudo ln -snf 的位不再准确。这实际上是指Mr. Ronald的答案 @KarthicRaghupathi 我不确定我是否完全理解评论(thisthat 的使用有点令人困惑)但您仍然需要来自 /Sytem/Library/etc 位置的符号链接到 Oracle 安装 JVM 的实际位置(/Library/等),否则应用程序将无法找到 Java 运行时。 @Marco 既然你提到了它,当我阅读我自己的评论时,它并没有多大意义。 :) 请允许我澄清一下。在你的答案中,你写“之后,你需要做上面答案中提到的sudo ln -snf;”。答案会根据他们获得的赞成票数上下移动。我的意图是只提供对具有sudo ln -snf 命令的答案的直接引用。 已编辑 - 但实际上不确定重新排序是否真的发生:无论是否赞成,它们似乎都在原处。 NVM【参考方案4】:

我从Oracle 下载并安装了 JDK 1.7。在控制台/TerminalJava 7 中工作正常。

当我通过 GUI 启动 Java 程序(如 Eclipse)时,我得到:

要打开“Eclipse.app”,您需要 Java SE 6 运行时。你是否想要 现在安装一个?

因为我不想安装旧的 Java 版本,所以我使用了以下解决方法:

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

感谢monkehWorks。

【讨论】:

我需要使用ln -snf,因为我得到了Operation not permittedln -sf 谢谢,我编辑了答案并在 ln 命令中添加了 -n 选项。 +1 正是我想要的。谢谢!安装后 CLI 获得了对 JDK 7 的引用。然而,为了让 GUI 应用程序获取正确的 JDK,这一步是必要的。 很有希望,但它对我不起作用。 android Studio 0.3.2 坚持“下载 Java 6”,我不会这样做。 Oracle Java 7 JDK 已安装。 您需要 64 位版本的 Eclipse。 32位需要Apple java。【参考方案5】:

出现此错误是因为 IntelliJ IDEA 的 plist 文件需要 Java 版本 1.6*。要解决此问题,请将 1.6* 替换为 1.8*。

<key>JVMOptions</key>
<dict>
    <key>ClassPath</key>
      ...

    <key>JVMVersion</key>
    <string>1.8*</string>

    <key>MainClass</key>
    <string>com.intellij.idea.Main</string>
    <key>Properties</key>
<dict>

【讨论】:

这是为我做的。我的问题是当我更新到 osx 10.9 时,我仍然可以从终端访问 java 和其他一切(包括 eclipse 工作正常)。只有 Android Studio 导致了这个错误。 这在 OS X 10.10.1 上对我不起作用,它抱怨没有可用的 1.8 版本(即使正确安装了 JRE 8)。 你检查是否设置了 JAVA_HOME?【参考方案6】:

OP 暗示需要 Java 7。事实上,Java 6 已不再被“支持”,因此 7 是您此时应该安装的版本,除非您有遗留应用问题。

你可以在这里得到它: http://java.com/en/download/mac_download.jsp?locale=en

【讨论】:

我们不应假设 Apple 当前发行的 Java 6 不受支持。 我将“支持”一词放在引号中,以避免试图梳理出一个复杂的问题。 Oracle 对任何 6 的支持收费......并且该支持费用在逻辑上也适用于 Apple;因此,Apple 是“独立的”,没有合同。他们有没有,并且计划通过 MacOSX 的补丁来工作?合同是否仍允许重新分配?自从 Apple 上次更新到 6 之后,Oracle 已经有 2 次 Java 7 更新。从历史上看,它们倾向于锁步发布。假设,也许;一个安全的假设?好像是这样。【参考方案7】:

我在 OS X 10.9 上更新 Java SDK 的经验要容易得多。

我从SE downloads 下载了最新的Java SE Development Kit 8 并安装了.dmg 文件。在终端中输入java -version 时会显示以下内容:

java 版本“1.8.0_11”

Java(TM) SE 运行时环境(内部版本 1.8.0_11-b12)

Java HotSpot(TM) 64 位服务器 VM(内部版本 25.11-b03,混合模式)

【讨论】:

【参考方案8】:

我手动下载到这里:Java for OS X 2014-001。

然后打开你的终端并使用java -version检查安装。

编辑(2015 年 1 月):另见 HT202912, About Java for OS X 2014-001:

【讨论】:

【参考方案9】:

来自 OP:

我终于从 Java for OS X 2013-005 重新安装了它。它解决了这个问题。

【讨论】:

【参考方案10】:

这个错误意味着 Java 没有正确安装。

1) brew cask install java (No need to install cask separately it comes with brew)

2) java -version

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

P.S - 什么是 brew-cask ? Homebrew-Cask 扩展了 Homebrew ,并解决了执行额外命令的麻烦 - “要安装,请拖动此图标...” 在使用 Homebrew 安装应用程序后。

注意 - 这个问题不是 Mavericks 特有的,几乎所有 OS X 都会遇到这个问题,包括 EL Capitan。

【讨论】:

【参考方案11】:

不需要安装JDK,即开发者工具包,只需要安装JRE,即运行时环境

【讨论】:

确实如此。但是,Apple 提供的是 JDK,Oracle 的 JRE 仅用于 Internet 插件,java 命令不会在系统范围内自动链接,因此您仍然会看到“没有 Java 运行时存在,请求安装”。当您在终端中键入java -version 时。

以上是关于在 OS X 10.9 (Mavericks) 上安装 Java的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X Mavericks 10.9 上安装 apache 2.4

如何在 OS X 10.9 (Mavericks) 上使用 GDB 而不是 LLDB 调试 ELF 文件?

OS X 10.9 Mavericks - 使用虚拟主机设置本地主机

使用 PhoneGap/Cordova 为 Android 构建时,在 Mac OS X 10.9 Mavericks 上执行命令“ant”时出错

pip 在 Mac OS X Mavericks (10.9) 上引发 stdio.h not found 错误

在 migratePersistentStore: 到 OS X 10.9 Mavericks 上的另一个 URL 后访问 NSManagedObject 属性时崩溃