1. 问题
最近Mac OS电脑需要配置Hadoop环境,需要用到jdk 1.7。
- Java Development Kit (JDK)
-
- Please note, since there are no available supported OpenJDK 8 packages for Ubuntu 14.04, the Ubuntu 15.04 packages must be
- installed manually. See JDK for Ubuntu LTS 14.04 for precise instructions.
-
- The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
- Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
- Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
- Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
于是我安装了Mac版的jdk 1.7(安装过程很简单,下载dmg包之后直接双击就好了,默认的路径是/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home)。
想到了一个办法:在系统里安装两个版本的jdk,使用的时候通过修改环境变量进行切换,这样就可以在同一个用户下进行版本切换了。
我查了一下资料,看到网上有人提出一种方法:安装多个版本的jdk,使用alias命令对版本切换的命令重命名,然后再使用的时候直接调用命令的别名就可以了(具体参见http://chessman-126-com.iteye.com/blog/2162466)。关于这个alias命令,从字面上看就是别名的意思,用户可利用alias,自定指令的别名。(从这一点来看,Mac OS和Linux差不多嘛)。
2. 解决方案
在Mac OS下打开终端,输入如下命令:
这个命令执行完了会进入bash_profile文件里,我们先敲一下键盘上的“i”,让它进入insert模式,然后输入以下内容(这里要依据你安装的不同的jdk版本来输入,我的电脑上先安装了jdk 1.7,之后又安装了jdk 1.8,我们要先弄清楚他们的目录在哪里然后再编辑bash_profile文件,查询jdk目录可以使用命令/usr/libexec/java_home -v,因为电脑里安装了多个版本的jdk,如果只输入上述命令的话他只会告诉你最近一次安装的jdk的目录在哪里,因此,要想查询不同版本的jdk目录,应该在“-v”后面空一格再输入1.7或者1.8或者别的什么版本号就可以):
- # 设置 JDK 7
- export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
- # 设置 JDK 8
- export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
-
- #默认JDK 7
- export JAVA_HOME=$JAVA_7_HOME
-
- #alias命令动态切换JDK版本
- alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
- alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
最后我们使用命令
使之生效就可以了。
3. 实现效果
先看一下当下的jdk版本
- liuyunhaodeMacBook-Pro:~ liuyunhao$ java -version
- java version "1.8.0_101"
- Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
- Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
然后我们使用jdk7这个命令来改变当前的jdk版本,在终端输入“jdk7”即可,然后再查看版本:
- liuyunhaodeMacBook-Pro:~ liuyunhao$ jdk7
- liuyunhaodeMacBook-Pro:~ liuyunhao$ java -version
- java version "1.7.0_71"
- Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
- Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
成功!