虽然 Java 8 的正式版已经发布了两年有余,但目前 Java 企业级应用的主打版本还是 Java 6 和 Java 7,更惨的是公司的一些早期项目还必须在 Java 5 下开发运行,而我还想在工作之余体验+学习 Java 8 的新特性。于是,我需要在我的 Mac 上同时安装 JDK 1.5,JDK 1.6, JDK 1.7 和 JDK 1.8。
过去 Mac 上的 Java 都是由 Apple 自己提供的,但只支持到 Java 6,并且从 OS X 10.7 开始系统不再默认安装了(可选安装,原自带的是 JDK 1.6)。后来 Apple 加入 OpenJDK 阵营继续支持 Java 6,而从 Java 7 开始由 Oracle 负责提供。暂且认为是 Apple 派 和 Oracle 派。
在 Terminal 中输入 java -version 可查看当前JDK版本信息,如果还没安装任一JDK,就会提示安装,点击后会跳到 Oralce Java 的下载网页。
系统环境
OS X EI Capitan(版本 10.11.5)
前期准备
- Java安装包
- JDK 1.5:Java for Mac OS X 10.5 Update 10(From: Apple)
- JDK 1.6:Java for OS X 2015-001(From: Apple)
- JDK 1.7 及以上:Java 中文官网 或 Oracle Java 下载(From: Oracle)
- 辅助工具
- Pacifist:用于提取*.dmg安装包中的文件(点我下载)
安装步骤
JDK 1.6 及以上版本的安装过程较为简单,不再赘述。下面着重介绍安装 JDK 1.5 的过程。
- 删除系统中的默认目录文件:
$ sudo rm /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0
- 使用 Pacifist 提取 “Java for Mac OS X 10.5 Update 10”中的文件:
- 在 JavaForMacOSX10.5Update10.dmg 上 右键 -> 打开方式 -> Pacifist
- 找到 /System/Library/Frameworks/JavaVM.framework/Versions/ 目录,选中 1.5 和1.5.0 两个目录,右键 -> 安装到默认位置
- Terminal 中切换到 jdk 1.5 的安装目录下,验证是否安装成功:
1 $ cd /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin 2 $ ./java -version 3 java version "1.5.0_30" 4 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_30-b03-389-11M4833) 5 Java HotSpot(TM) Server VM (build 1.5.0_30-161, mixed mode)
安装路径
Apple派的 JDK 1.6 与 JDK 1.5 在 OS X 上的安装路径是不同的,JDK 1.6 与 Oracle 派的 JDK 的安装路径一致,这点需要特别注意。
JDK 1.5 的安装路径:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0
JDK 1.6 的安装路径:/Library/Java/JavaVirtualMachines/1.6.0.jdk
系统默认的 JDK 版本,是通过 link 来实现的,也就是说 Java 程序如 Maven、Eclispe 选择哪个 JDK 是通过各自的启动脚本,按照约定的 link 文件去查找 Java 程序的。比如 Maven 就会先找 Apple 派的 JDK 后找 Oracle 派的 JDK。
Apple 派的 JDK 通过把文件 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDKlink 到某个版本的 JDK 实现了多版本支持。
Oracle 派的 JDK 学习 Aplle 派的方法也支持多版本,link 文件是 /System/Library/Frameworks/JavaVM.framework/Versions/Current。
在 Eclipse 中配置JRE
Preferences -> Java -> Installed JREs,将安装好的各版本 JDK 添加到列表中。
注:本文不包含JDK多版本管理切换的部分。