如何在Mac OS X上安装特定的JDK?


197

我想安装一个特定的JDK(例如最新的)。为此,我转到了JDK下载主页:http : //java.sun.com/javase/downloads/index.jsp。我寻找的是Mac版本,但只看到Linux,Windows和Solaris的可下载版本,我感到有些惊讶...

这是Mac的讯息:

“ Apple Computer提供了自己的Java版本。使用Software Update功能(在Apple菜单上可用)来检查您的Mac是否具有最新的Java版本。”

好的但是 ...当我用Mac更新Java时,我有一个JRE而不是一个JDK ...

我不明白为什么不存在Mac易于下载/安装的JDK版本(例如要解压缩的jar?)。


70
著名的问题...您应该接受答案。;)
gary 2010年

Fink为此提供了解决方案。
丹尼尔(Daniel)

10
请注意,Oracle现在提供了Java 7-大多数答案和问题都指向较早的状态
mmmmmm 2013年

Answers:


44

在@Thilo的回答下的评论中,@ mobibob询问如何在Mac上的.bash_profile中设置JAVA_HOME。回答:

export JAVA_HOME=`/usr/libexec/java_home` 

这将为“ Java首选项”实用程序的“常规”选项卡中列出的第一个JDK动态分配给JAVA_HOME。

请参阅Apple技术问答1170:https : //developer.apple.com/library/content/qa/qa1170/_index.html

编辑:

如果您更希望使用括号而不是反引号来进行命令替换,则此方法也适用:

export JAVA_HOME=$(/usr/libexec/java_home)

20

如消息所示,在Mac上,您必须去Apple而不是Sun。据我所知,Apple JDK 6默认安装在Mac OS X 10.6(Snow Leopard)上。也许您需要从Mac OS X安装DVD安装开发人员工具(开发工具是OS DVD的可选安装)。

请参阅:http : //developer.apple.com/java/

注意从2009年10月16日开始,此答案已过时;您现在可以从Oracle网站上的常规JDK下载页面获取Mac OS X的JDK



10

我昨天买了MacBook Pro(Mac OS X v10.8(Mountain Lion)),默认情况下没有安装JDK。

除了javac之外,我还发现它没有安装SVN等软件包。事实证明,您可以从Apple开发人员页面上获取所有内容(您需要注册AppleID)。SVN是“命令行工具”软件包的一部分。

在此处输入图片说明

这是在新的MacBook上发生的情况:

在此处输入图片说明

在此处输入图片说明

希望这可以帮助像我这样的其他新手;)


5
+1。山狮队的情况有所改变。还应注意,尽管Apple提供了可选的Java安装,但是它仅是较旧的Java6。现在,OS X的当前Java版本由Oracle自己分发。
Thilo


4

原因是JDK有点特定,并且不包含库tools.jar。对于我的开发,我需要这个库,而Mac的JDK不提供它:

(参见http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/02-JavaDevTools/JavaDevTools.html

tools.jar不存在。通常位于此处的类包含在classes.jar中。依赖tools.jar存在的脚本需要相应地重写。

糟透了!


1
啊!正如您所发现的,tools.jarMac OS X的运行时已包含它。因此,tools.jar在Mac上寻找不是正确的方法来确定它是JDK还是JRE :)
Pascal Thivent 09年

感谢您的回复,您说得对。我需要获取特定项目的tools.jar库,对我来说,这是识别jdk的一种方法;)
ajeanson

4

最简单的方法是使用Homebrew。安装Homebrew,然后:

brew tap caskroom/versions
brew cask install java7

您可以使用以下命令列出所有可用版本: brew cask search java


3

使用-source 1.5进行编译-target 1.5(在JDK 6环境中)将仅接受1.5及更低版本中的语言元素。大。但是无论如何,6种语言都没有变化。这种方法的问题(在Mac上为1.6)是使用1.5之后的类仍然可以编译,因为它们存在于rt.jar中。因此,一个人可以在1.5 env中运行,并在编译时获得没有事先警告的类未找到异常。我发现这很难通过javax.swing.event.RowSorterEvent / Listener来解决。两者都输入“ Since 1.6”,但未被-source 1.5捕获



3

Mac OS X v10.6(Snow Leopard)开始,您可以在装有32位或64位Intel处理器的Mac 上以32位模式运行Java 6 。

如果您无法升级到Snow Leopard,则Soy Latte是适用于Intel 32位的Java 6的预编译版本。



1

我认为这个其他堆栈溢出问题可能会有所帮助:

如何在Mac OS X上获取JDK 1.5

基本上说,如果您需要使用较旧版本的JDK(例如1.4或1.5)来编译或执行Java应用程序,则可以使用1.6来实现,因为它是向后兼容的。为此,您将需要在Javac选项或IDE中添加参数-source 1.5和/或-target 1.5


1

JDK是Java开发工具包(用于开发Java软件)。

JRE是Java运行时环境(用于运行任何.jar文件“ Java软件”)。

JDK在其中包含一个JRE。

在Windows上,当您更新Java时,它将自动更新JRE。

在Mac上,没有JRE,但是在JDK内部,因此,当您更新Java时,它将更新JDK内部的JRE。它不会为您安装JDK。您需要从其他地方获取它。


1
我认为您的意思是JDK而不是IDK。我尝试编辑,但是Stack Overflow表示编辑的长度必须超过6个字符。仅提及它是为了避免混淆。
webworm


1

由于大多数答案已经过时,因此以下假设是截至2018年底的有效方法:

  1. 您要安装GPL版本的OpenJDK。[0]
  2. 您不想安装Homebrew

在这种情况下,请从许多可用的,可免费使用的OpenJDK版本中获取所需的版本,例如:

其中一些包括安装程序,但如果没有,则可以执行以下操作。假设此处为Mac版本11.0.1。在您最喜欢的外壳中,运行:

tar -xzf openjdk-11.0.1_osx-x64_bin.tar.gz
sudo mv jdk-11.0.1.jdk /Library/Java/JavaVirtualMachines
# Fix owner and group
sudo chown -R root:wheel /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk
# (Optional) Check if the new JDK can be found
/usr/libexec/java_home
=> /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

[0]请注意,Oracle品牌的JDK具有重要的许可限制,允许您基本上将其用于测试,而不用于生产。如果您没有与Oracle达成支持协议,那么使用他们的JDK对我来说似乎有风险,特别是因为与OpenJDK差异很小

编辑:添加了更多选择


1
我建议您指出从AdoptOpenJDK.net下载,然后按照说明进行操作,从而避免了Oracle版本的法律和支持问题。
罗勒·布尔克

0

通常,您不能在Mac上安装Java的其他版本,而不能通过Apple通过软件更新提供的Java。如果需要Java 6,则必须有一台64位Intel计算机。如果您至少有OS X 10.4,则应该始终安装Java 5和1.4,以及1.3。

如果您的肘部油脂非常多,并且愿意使用Beta版软件,则可以在OS X下安装OpenJDK,但我认为您不想去那里。


我知道,这就是我添加该评论的原因。也许应该写一些更长一点的评论才能与链接有关:-)
Neeme Praks 2011年
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.