MAC下安装多版本JDK和切换几种方式

环境:

MAC PRO,OS X 10.11.6,64位

历史:

过去 Mac 上的 Java 都是由 Apple 自己提供,只支持到 Java 6,并且OS X 10.7 开始系统并不自带(而是可选安装)(原自带的是1.6)。

后来 Apple 加入 OpenJDK 继续支持 Java 6,而 Java 7 将由 Oracle 负责提供。

在终端中输入java -version可查看当前JDK版本信息,如果还没安装任一JDK,就会提示安装,点击后会跳到oralce java的下载网页。

安装包(注意都是下载mac下的dmg安装包):

JDK 1.6(验证OS X 10.10可用):http://support.apple.com/kb/DL1572

JDK 1.7&1.8(1.7在页面下方):http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装:

dmg安装包,安装过程如一般程序,略

最终安装目录(版本号根据情况略有不同):

JDK 1.6:

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk

JDK 1.7&1.8:

/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk

推荐方式A:

Java代码  

  1. vi .bash_profile 输入以下内容
  2. 然后执行source .bash_profile生效新配置

Java代码  

  1. # Mac默认 JDK 6(Mac默认自带了一个jdk6版本)
  2. export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`
  3. # 设置 JDK 7
  4. export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
  5. # 设置 JDK 8
  6. export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
  7. #默认JDK 6
  8. export JAVA_HOME=$JAVA_6_HOME
  9. #alias命令动态切换JDK版本
  10. alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
  11. alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
  12. alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

默认jdk为1.6,执行jdk6或jdk7或jdk8后,通过java -version可看到已切换成相应版本。

推荐方式B:

1、安装jenv

执行:curl -s get.jenv.io | bash

jenv参考(关键是方便别的java工具管理):https://github.com/linux-china/jenv/wiki/Chinese-Introduction

2、进入jenv目录,然后建相关目录:

Java代码  

  1. cd ~/.jenv/candidates/
  2. mkdir java
  3. cd java
  4. mkdir 1.6
  5. mkdir 1.7
  6. mkdir 1.8

3、执行以下命令:

Java代码  

  1. ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.6
  2. ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.7
  3. ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.8

大功告成:

1、最先默认的jdk一般是你最后安装的那jdk。

2、切换版本:jenv use java 1.8

3、设置缺少版本:jenv default java 1.6

不推荐方式:

Java代码  

  1. #区别在于:此部分是写死路径的
  2. export JAVA_6_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
  3. export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
  4. export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
  5. #默认JDK 6
  6. export JAVA_HOME=$JAVA_6_HOME
  7. #alias命令动态切换JDK版本
  8. alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
  9. alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
  10. alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

 

根据苹果的官方说明,Mac OS X 10.5 及以后的版本应该使用 /usr/libexec/java_home 命令来确定 JAVA_HOME (推荐方式A就是依据此原理)。

例:

Java代码  

  1. //查看默认jdk的安装路径
  2. /usr/libexec/java_home
  3. //查看jdk 1.6的安装路径
  4. /usr/libexec/java_home -v 1.6

而在此之前的版本由于没有这个命令,则应该使用固定的 /Library/Java/Home 目录,也就是直接在环境变量中写死。

Java代码  

  1. //下面的几个目录其实是等价的链接关系,都指向的是默认的JDK。但是硬编码方式,不推荐。
  2. JAVA_HOME=/Library/Java/Home
  3. JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
  4. JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home

因为不同的 Java 版本和不同的 Java 实现可能安装在了不同的目录下,所以使用硬编码的目录会有如下缺点:

  • 安装或升级新的 Java 后需要重新设置 JAVA_HOME(尤其是带版本号的目录)
  • 无法适应不同的 Java 实现(Apple和Oracle的)

其他分析:

1、打开终端输入执行:which java,显示/usr/bin/java

2、执行cd /usr/bin/,再执行ls -ll |grep java,可看到java此命令是link到/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

3、执行:cd /System/Library/Frameworks/JavaVM.framework/Versions/ 进入后,再执行ls -ll,可看到Current -> A,也就是Current目录link到A目录。而A目录在安装第一个JDK时就存在,用来JDK多版本管理使用的(猜测是使用到JAVA_HOME)。

另外:

/System/Library/Frameworks/JavaVM.framework/Versions/ 下有多个不同(低)版本的目录,但它们链接的都是 CurrentJDK 目录。总之,这些Java都是苹果提供的Java,Oracle 或 OpenJDK 提供的 Java 不在此目录中。

据说以前可在系统设置中“Java Preferences”对话框可设置当前jdk,再自动调整A目录内容,但我没看到过。

Java 7 需要 Mac OS X 10.7.3 (Lion) 及以上版本才能安装。在浏览器中运行Java要求是64位浏览器,所以不支持Chrome, Safari 或 Firefox 没问题。

时间: 2024-10-29 19:05:57

MAC下安装多版本JDK和切换几种方式的相关文章

mac下安装配置java jdk,maven,resin

mac jdk安装及环境变量配置 安装http://www.ifunmac.com/2013/04/mac-jdk-7/ jdk安装目录:/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/ 环境变量:http://hdu104.com/23 maven的安装与配置 http://www.cnblogs.com/wanyakun/p/4171741.html 注意:配置完环境变量,即修改/etc/profile后需要重启

Mac下安装多个JDK

Condition:系统:优胜美地,安装了jdk8,7,6,5,4 mvn3.3 不支持1.8,所以需要回到过去 系统内部JVM位置 /System/Library/Frameworks/JavaVM.framework/Versions/ 用哪个就: JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home 在MAC中设置JAVA_HOME环境变量 环境变量要再etc目录下的profile文件中配置,这样

【Java】Linux下安装配置Oracle JDK 1.7版本

1 环境 Vmware虚拟机中的Ubuntu 12.04 32位系统 2具体安装步骤 ①下载最新的jdk包 注意jdk区分32位版本和64位版本,要与Ubuntu兼容才行 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html ②创建一个目录,解压压缩包 mkdir usr/lib/jvm 移动到该目录,并解压 [email protected]:/usr/lib$ sudo

Mac下安装LNMP(Nginx+PHP5.6)环境

Mac下安装LNMP(Nginx+PHP5.6)环境 安装Homebrew 最近工作环境切换到Mac,所以以OS X Yosemite(10.10.1)为例,记录一下从零开始安装Mac下LNMP环境的过程 确保系统已经安装xcode,然后使用一行命令安装依赖管理工具Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 之后就可以使用 brew

在mac下安装jdk1.7(转)

转自:http://vela.diandian.com/post/2012-01-06/15379924 最近呢,想玩玩jdk1.7,不过mac平台下的jvm一直都是Apple自己改的,所有有些麻烦.这篇文章呢,就是一个详细的步骤,教你如何在mac下安装和使用jdk1.7.当然了,和你想象的一样,我是不会写什么有技术含量的文章的,所以只是一个简单的guide. 首 先呢,为了少出问题,先要让平台装一个java,Snow Leopard下还好(默认就有),Lion的话默认是没有安装任何jvm的,安

Mac下安装HBase及详解

Mac下安装HBase及详解 1. 千篇一律的HBase简介 HBase是Hadoop的数据库, 而Hive数据库的管理工具, HBase具有分布式, 可扩展及面向列存储的特点(基于谷歌BigTable). HBase可以使用本地文件系统和HDFS文件存储系统, 存储的是松散的数据(key-value的映射关系). HBase位于HDFS的上层, 向下提供存储, 向上提供运算 2. HBase安装 HBase有单机, 伪分布式, 全分布式运行模式 依赖: 匹配HBase的Hadoop版本 Jav

Mac下安装Thrift

在mac下安装软件跟Linux安装比较类似,在安装Thrift之前需要先安装依赖. 1.安装BOOST 下载:http://www.boost.org/    (boost_1_57_0.tar.gz) 解压:tar -zvxf boost_1_57_0.tar.gz 切换目录:cd boost_1_57_0 命令:./bootstrap.sh,该命令用于生成bjam可执行文件,这个东西就是用来编译boost库 命令:sudo ./b2 threading=multi address-model

mac下安装mongoDB

方式一:命令行 MongoDB的安装有好多种安装方法,有普通青年的HomeBrew方式,也有文艺青年的源码编译方式.我只想快速的装起来用一下,所以我选最简单的HomeBrew. 请参考官方文档 : http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/ 更新Homebrew的package数据库,在Mac的终端中输入: $ brew update 然后耐心等待,这个没有任何显示,估计要几分钟,取决于网络的速度.然后就列出了

mac下安装配置java开发环境

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000; min-height: 13.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #