ChatGPT解决这个技术问题 Extra ChatGPT

在 OS X 10.9 上安装 Java(小牛)

我已在 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,但小牛默认没有安装 1.6。
您安装了 java 6,而不是 OP 最初暗示他们需要的 java 7。我对如何实现该解决方案感兴趣。这里还必须有一种“替代”方法,直接解决来自终端的反馈。
这对 Java 6 来说很好,但是如何让 Java 7 工作呢?
添加了安装 Java 7 JRE 并使其在终端中运行的潜在答案:stackoverflow.com/a/19582689/346286

G
Gray

新的 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 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?在 Mavericks 下,64 位 java 实际上比 32 位要快。
a
analogue

如果你只想从 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/…
@Ilkka - 听起来确实很可疑,但这实际上是安装 Oracle 的 JRE 的地方。 Apple 的 java(止于 java 6)与 oracle 的混合并不像人们喜欢的那样好
我的一位同事(不幸的是,他在这里没有添加评论所需的声誉)想补充一点,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 才能完成这项工作。
M
Marco Massenzio

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 疯狂的超链接迷宫中摸索,但老实说,生命太短暂,无法打扰。


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

我从 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 permittedln -sf
Thx,我编辑了答案并将 -n 选项添加到 ln 命令。
+1 正是我想要的。谢谢!安装后 CLI 获得了对 JDK 7 的引用。然而,为了让 GUI 应用程序获取正确的 JDK,这一步是必要的。
很有希望,但对我没有用。 Android Studio 0.3.2 坚持“下载 Java 6”,我不会这样做。已安装 Oracle Java 7 JDK。
您需要 64 位版本的 Eclipse。 32位需要Apple java。
P
Peter Mortensen

出现此错误是因为 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 是否已设置?
R
Rondo

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

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


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

我在 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,混合模式)


j
jww

我手动下载到这里: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


E
Eric Leschinski

从OP:

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


s
sapy

此错误表示 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。


P
Peter Mortensen

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


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