OS X和JAVA_HOME位置支持多种Java版本


12

我知道在OS X上可以有多个Java版本,但是我很难理解它是如何工作的。

我升级到山狮,现在echo $JAVA_HOME是空的。

但是在 /System/Library/Frameworks/JavaVM.framework/Versions/

1.4     1.5     1.6     A       CurrentJDK
1.4.2   1.5.0   1.6.0   Current

当我进入1.4.2并执行java - version./java -version

Java(TM)SE运行时环境(内部版本1.6.0 _33-b03-424-11M3720)

那么,为什么所有这些版本都使用相同的Java版本呢?

然后,我从Oracle下载了JDK 7并安装了它。

通常在哪里安装新的JDK?

最后一个问题:如何选择所有应用程序默认运行的版本?

在赢。我设置JAVA_HOMEC:/ProgramFiles/Java/.… 我在Path中放置的位置JAVA_HOME/bin,仅此而已。


1
自从Oracle最近使用术语JRE来单独描述Java applet插件以来,这也许引起了人们的兴趣(令人困惑!)。而且由于OS X的用户现在可以同时使用两个不同的版本(一个版本用于插件,另一个版本用于不使用该插件的应用程序):如何最好地在Mountain Lion上管理不同的Java版本?
格雷厄姆·佩林

Answers:


3

/System/Library/Frameworks/JavaVM.framework/Versions的内容

对于大多数用例,CurrentJDK应提供JDK 的当前版本过去版本的功能。

并非所有过去的版本,但最常用的版本是:

sh-3.2$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8
BuildVersion:   12A269
sh-3.2$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions
total 64
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 17 Jul 07:48 A
lrwxr-xr-x  1 root  wheel    1 17 Jul 07:47 Current -> A
lrwxr-xr-x  1 root  wheel   59 17 Jul 07:47 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
sh-3.2$ 

14

首选Java版本

以常规方式使用Java首选项。

除了Apple的Java发行版以外,根据您所安装的软件的不同,该实用程序的第一个选项卡可能会有所不同。

一个示例,没有熟悉的applet和Java Web Start选项:

Java偏好设置的屏幕截图

有一些有关在命令行级别如何工作的背景知识。命令行工具java_home会报告此首选项设置。

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home

在/ usr /斌/ java的占位应用程序,使得使用这些设置运行Java的首选版本。

$ which java
/usr/bin/java

$ java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

最后,当在启动脚本中为Tomcat或Maven配置JAVA_HOME时,您可以连接到首选项系统:

export JAVA_HOME=`/usr/libexec/java_home`

其他地方的答案指出,Java可能会安装在多个路径上– 

  • /系统/库/ Java / JavaVirtualMachines
  • /图书馆/ Java / JavaVirtualMachines
  • 〜/库/ Java / JavaVirtualMachines

–但对于当前问题的描述,来自Oracle在Mountain Lion上的JDK,可能只有一条路径


感谢社区编辑,背景阅读应该有其他链接吗?
格雷厄姆·佩林

2
Java偏好设置不再受支持,并且在应用Java 2012-006更新时实际上已被删除。这是Apple不再提供和支持Java的一部分。
BryanH 2013年

@BryanH谢谢–这个答案是在Java for OS X 2012-006之前的几个月给出的–请参阅链接的问题。另请注意,虽然苹果移动远离分布 JRE的,我们应该认为苹果将不再支持 Java的。
Graham Perrin

是啊谢谢。我想我应该澄清一下,“支持”意味着Apple不再提供或回答有关OSX的Java虚拟机的技术问题。由Oracle(或另一个第三方)编写和维护所述JVM。
BryanH 2013年

5

Mac OS X 10.8.2 Build 12C60开始, Java Preferences不再显示旧版本。


3

用于安装JDK的路径

跑:

ls -l /Library/Java/JavaVirtualMachines

可以使用其他路径,但是对于从Oracle安装到Mountain Lion的当前JDK,您可能会.jdk在该路径中找到捆绑软件。

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.