我已在 Mac OS X v10.8(Mountain Lion)上安装了 JDK。当我将它升级到 Mac OS X v10.9(小牛队)并在终端中运行 java -version
时,它显示:
不存在 Java 运行时,请求安装。
然后我在我的 Mac 上手动安装了 JDK(1.7)。似乎安装工作正常。安装完成后,我打开终端并输入 java -version
。它也显示了同样的错误:
不存在 Java 运行时,请求安装。
我怎么解决这个问题?
新的 Mavericks (10.9) 向我展示了“请求安装”,但什么也没发生。
解决方案是手动下载并安装 OS X 的官方 Java 包,该包位于 Java for OS X 2013-005 中。
更新:正如下面的评论中提到的,这个包有一个更新的版本:
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 安装最新的官方 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 版本“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/…。
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"
export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
添加到 ~/.profile 而不是 ~/.bashrc 或 ~/.bash_profile 才能完成这项工作。
Java SE Downloads 是下载适用于 Java 7 的 JDK 的正确位置。
据我所知,上面提供的所有其他链接都提供了 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 疯狂的超链接迷宫中摸索,但老实说,生命太短暂,无法打扰。
sudo ln -snf
位不再准确。这实际上是指Mr. Ronald的答案
this
和 that
的使用有些令人困惑),但您仍然需要从 /Sytem/Library/etc 位置到 Oracle 安装的实际位置的符号链接JVM (/Library/etc.) 或应用程序将无法找到 Java 运行时。
sudo ln -snf
;”。答案会根据他们获得的赞成票数上下移动。我的意图是仅提供对具有 sudo ln -snf
命令的答案的直接引用。
我从 Oracle 下载并安装了 JDK 1.7。在控制台 / 在 Terminal Java 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 permitted
和 ln -sf
出现此错误是因为 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>
OP 暗示需要 Java 7。 Java 6 实际上不再被“支持”,所以 7 是您此时应该安装的版本,除非您有遗留应用程序的问题。
你可以在这里得到它:http://java.com/en/download/mac_download.jsp?locale=en
我在 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,混合模式)
我手动下载到这里:Java for OS X 2014-001。
之后打开您的终端并使用 java -version
检查安装。
编辑(2015 年 1 月):另见 HT202912, About Java for OS X 2014-001:
https://i.stack.imgur.com/LUVkY.png
从OP:
我终于从 Java for OS X 2013-005 重新安装了它。它解决了这个问题。
此错误表示 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)
PS - 什么是 brew-cask ? Homebrew-Cask 扩展了 Homebrew ,并解决了在使用 Homebrew 安装应用程序后执行额外命令的麻烦 - “要安装,请拖动此图标...”。
注意 - 这个问题不是 Mavericks 特有的,你会在几乎所有的 OS X 上得到它,包括 EL Capitan。
不需要安装 JDK,即 开发工具包,只需安装 JRE,即 运行时环境。
java
命令不会在系统范围内自动链接,因此您仍然会看到“没有 Java 运行时存在,请求安装”。当您在终端中键入 java -version
时。