OS X Mountain Lion上的多个Java版本

在Mountain Lion之前,Java被捆绑在OS X中。似乎在升级期间,我在计算机上安装的Java 6版本被删除了。
显然,在升级过程中卸载Java的原因是Java运行时存在的安全问题。通过这种方式,您不得不安装可解决此安全问题的最新版本。

所以我去了/ Applications / Utilities /打开一个终端并执行以下命令:
java -version ==>“不存在Java运行时……”
出现一个提示您安装Java的窗口。单击“安装”并获取最新版本。我已经安装了它,但是就在我从Oracle下载并安装了JDK SE 7之后。

安装后,打开Java首选项(Launchapad / Others),您将看到:

现在我知道我有两个Java版本,但是我正在使用哪个版本?

$ java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

那么,如果我想使用Oracle的JDK SE 7怎么办?
然后,我只需将Java Preferences窗口中的Java SE 7拖到列表中的第一个位置。

这次 :

$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

我对自己说,让我们了解更多有关如何在OS X上安装Java的信息,因此我进行了更多研究。

有一些非常有用的命令: whereiswhichls -l

whereis java ==> /usr/bin/java
ls -l /usr/bin/java ==> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

当我看到此消息时,我有点好奇,所以我列出了Versions目录:

cd /System/Library/Frameworks/JavaVM.framework/Versions
ls ==>
1.4 1.5 1.6 A CurrentJDK
1.4.2 1.5.0 1.6.0 Current

现在,为什么我的机器上装有Java的旧版本? 所以我问了Ask Different
http://apple.stackexchange.com/questions/57986/multiple-java-versions-support-on-os-x-and-java-home-location

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.8.1
BuildVersion: 12B19
$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions
total 64
lrwxr-xr-x  1 root  wheel   10 Sep 16 15:55 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Sep 16 15:55 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Sep 16 15:55 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Sep 16 15:55 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Sep 16 15:55 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Sep 16 15:55 1.6.0 -> CurrentJDK
drwxr-xr-x  7 root  wheel  238 Sep 16 16:08 A
lrwxr-xr-x  1 root  wheel    1 Sep 16 15:55 Current -> A
lrwxr-xr-x  1 root  wheel   59 Sep 16 15:55 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

似乎所有旧版本都链接到AppleJ版本的CurrentJDK版本,但A和Current链接到AI除外,对此问题有所了解。对我来说,A就像一个临时变量。 如果在Java首选项中将Apple A的Java 6设置在第一个位置,而将Oracle A的Java SE 7放在第一个位置,则将Apple的Java 6指向此版本。当前指向A。

/java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
./java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

因此,这意味着在此当前目录中将指向在Java首选项中找到的第一个Java版本。
一个非常有趣的事情是以下信息

lrwxr-xr-x  1 root  wheel   59 Sep 16 15:55 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

这意味着来自Apple的Java实际上安装在这里:“ / System / Library / Java / JavaVirtualMachines / 1.6.0.jdk /”
Java SE 7呢? 我可以搜索文件系统来查看,但是找到了一种更简单的方法:

如果在Java Preferences中的第一个位置是Java SE 7 ==>

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home

如果在Java Preferences中的第一个位置是Java SE 6(系统)==>

$ /usr/libexec/java_home
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

因此,可能在以下位置之一安装Java on Mountain Lion(OSX):

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

/System/Library/Frameworks/JavaVM.framework/Versions呢?
似乎链接到所谓的“ Java桥 ”。这里似乎是OSX安装上Java的本机部分。

参考: Java Code Samples博客上的JCG合作伙伴 Cristian Chiovari提供了OS X Mountain Lion上Java的多个版本


翻译自: https://www.javacodegeeks.com/2012/09/multiple-versions-of-java-on-os-x.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值