在OS X 10.9(Mavericks)上安装Java


321

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

没有Java运行时,要求安装。

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

没有Java运行时,要求安装。

我怎么解决这个问题?


1
我不知道终端机有什么问题,但是我运行eclipse,所有项目在特立独行的情况下都可以正常编译
2013年

1
看来旧的Java启动器仅支持jdk 1.6,但默认情况下mavericks没有安装1.6。
肖恩

1
您安装了Java 6,而不是Java 7,因为OP最初暗示他们需要它们。我对如何找到解决方案很感兴趣。此外,这里必须有一种“替代”方法,可以直接解决来自终端的反馈。
Rondo

4
这对Java 6来说很棒,但是如何使Java 7正常工作呢?
190290000卢布人

2
添加了一个潜在的答案来安装Java 7 JRE并使其在终端中正常工作:stackoverflow.com/a/19582689/346286
2013年

Answers:


279

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

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

更新:如以下评论中所述,该软件包有较新的版本:

适用于OS X 2014-001的Java

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

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


我也是。另一个选择是从Oracle安装Java。你们认为哪一个更好?Oracle似乎比Apple更快地更新了Java。
Ngoc Pham 2013年

2
但这给了您JDK6。我们如何直接使用JDK 6?
肖恩

2
@Shawn Apple会禁用已安装的JDK7。但是您可以从此处获得一些常见问题解答并进行安装:java.com/en/download/faq/java_mac.xml,但我没有尝试。
盖伊

出口JAVA_HOME = /系统/图书馆/的Java / JavaVirtualMachines / 1.6.0.jdk /内容/首页:如果您已经安装了的Java6和java7,你可以在你的shell有选择V6
于尔根斯特罗贝尔

1
为什么要在64位操作系统上使用32位Java?在Mavericks下,64位Java实际上比32位更快。
MiB 2014年

195

如果您只想从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的最干净的方法。

您可以在终端中添加该export JAVA_HOME行以.bashrc使其java永久存在:

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

37
我认为定义JAVA_HOME指向明显是浏览器插件而不是真正的VM的听起来有点可疑。安装XCode命令行工具时,您将获得一个用于获取正确路径的工具/usr/libexec/java_home。请参阅developer.apple.com/library/mac/documentation/Darwin/Reference/…
Ilkka

8
@Ilkka-听起来确实有些可疑,但这实际上是Oracle JRE安装到的地方。苹果的Java(在Java 6处停止)与oracle的混合效果不佳
Orion Edwards

12
我的一位同事(不幸的是,他在这里没有所需的声誉才能添加评论)想要补充一点,JAVA_HOME设置应为export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"
StephanWindmüller2014年

1
我从Oracle安装了jdk7u45,但在我的bash配置文件中仍使用export JAVA_HOME = $(/ usr / libexec / java_home)。jdk7u45包括Java系统首选项面板都可以很好地工作。现在,我要升级到jdk7u51。
MiB 2014年

2
我必须添加export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"~~ .profile而不是〜/ .bashrc或〜/ .bash_profile才能完成此工作。
LarS 2014年

64

下载Java SE的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

另一种选择是在苹果的疯狂迷宫般的超链接中摸索,但说实话,生活太短了,无法打扰。


4
请参阅我对另一个答案的评论,以了解获得该途径的更好方法。
Ilkka

1
由于此答案具有更多投票权,因此sudo ln -snf以上答案中所说的内容不再准确。这实际上是指通过回答罗纳德先生
Karthic Raghupathi

@KarthicRaghupathi我不确定我是否完全理解注释(使用thisthat有些混淆),但是您仍然需要从/ Sytem / Library / etc位置到Oracle安装JVM的实际位置(/ Library / etc)的符号链接。 ),否则应用程序将找不到Java运行时。
Marco Massenzio

@Marco现在您提到了它,当我阅读自己的评论时,这真的没有多大意义。:)让我澄清一下。在您的答案中,您输入“之后,您将需要执行sudo ln -snf以上答案中提到的内容;”。答案根据获得的投票数而向上或向下移动。我的意图是仅直接提供具有sudo ln -snf命令的答案。
Karthic Raghupathi

编辑-但实际上不确定重新排序是否真的发生:无论投票如何,它们似乎都在原地。NVM
Marco Massenzio

14

我从Oracle下载并安装了JDK 1.7 。在控制台/ 终端中, 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


1
我需要使用,ln -snf因为我Operation not permittedln -sf
Lars Blumberg 2013年

谢谢,我编辑了答案,并在ln命令中添加了-n选项。
罗纳德先生2013年

+1正是我想要的。谢谢!安装后,CLI正在获得对JDK 7的引用。但是,要使GUI应用程序提取正确的JDK,必须执行此步骤。
Karthic Raghupathi

充满希望,但对我没有用。Android Studio 0.3.2坚持要“下载Java 6”,这是我不打算做的。已安装Oracle Java 7 JDK。
akauppi 2014年

您需要64位版本的Eclipse。32位需要Apple Java。
托尔比约恩Ravn的安徒生

4

发生此错误的原因是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导致了此错误。
ucsunil 2014年

这在OS X 10.10.1上对我不起作用,它抱怨没有可用的1.8版(即使正确安装了JRE 8)。
伊曼纽尔·布尔格

您是否检查了JAVA_HOME的设置?
Fabio Fumarola 2014年

3

OP暗示需要Java 7。Java 6实际上不再受支持,因此,除非您有遗留应用程序顾虑,否则您现在应该安装7版本。

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


我们不应该假设不支持Apple当前发布的Java 6。
Graham Perrin

我将“支持”一词放在引号中,以避免尝试挑出一个复杂的问题。甲骨文对6的任何支持收取费用...并且该支持费用在逻辑上也适用于Apple;因此,苹果没有合同就“独立”了。他们有一个,并且计划通过MacOSX的补丁来工作吗?合同是否仍然允许重新分配?从Apple的上次更新到6,现在Oracle已经有2个Java 7更新。从历史上看,它们倾向于锁定发行版。假设,也许;一个安全的假设?似乎如此。
Rondo 2014年

3

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

Java SE Development Kit 8SE下载中心下载了最新版本,并安装了.dmg文件。当输入java -version终端时,将显示以下内容:

Java版本“ 1.8.0_11”

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

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




1

此错误表示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-什么是冲煮桶?Homebrew-Cask扩展了Homebrew,并解决了使用Homebrew安装应用程序后执行额外命令的麻烦- “要安装,拖动此图标...”

注意:此问题并非特定于Mavericks,您将获得几乎所有的OS X,包括EL Capitan。


0

没有任何需要安装JDK,这是开发人员工具包,只是JRE这是运行环境


6
确实如此。但是,Apple提供的是JDK,而Oracle的JRE仅用于Internet插件,该java命令不会自动链接到整个系统,因此您仍然会看到“不存在Java运行时,要求安装”。当您java -version在终端中键入时。
Ngoc Pham
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.