网上试了.bash_profile中增加路径设置别名的方法,但是始终无法切换,只能使用jenv了。

1. 下载 jenv(来自官网)

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

2. 安装 jenv

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source .bash_profile

这将在 ~/.bash_profile 文件中追加一个 export 命令和 eval 命令。前者追加 jenv 的路径到环境变量 PATH 中,后者执行 jenv init -命令。这样每打开一个 bash 终端窗就可以调用 jenv 命令,并且默认执行一次 jenv init - 命令了。

3. 查看 java 版本

$ jenv versions
* system (set by /Users/Bill/.jenv/version)

可以看到 jenv 只列出了系统内置的 Java 版本(system),因为其它两个版本虽然安装了,但需要我们手动添加到 jenv 中,这样 jenv 才能管理它们。

4. 添加新的 java 版本

Bill-Mac:~ Bill$ jenv add /Library/Java/JavaVirtualMachines/1.6.0_65-b14-.jdk/Contents/Home
oracle64-1.6.0.65 added
1.6.0.65 added
1.6 added
Bill-Mac:~ Bill$ jenv add /Library/Java/JavaVirtualMachines/jdk1..0_75.jdk/Contents/Home
oracle64-1.7.0.75 added
1.7.0.75 added
1.7 added
Bill-Mac:~ Bill$ jenv add /Library/Java/JavaVirtualMachines/jdk1..0_144.jdk/Contents/Home
oracle64-1.8.0.144 added
1.8.0.144 added
1.8 added

5. 删除 java 版本

你会发现添加新版本时,每个版本都会一次性自动加入 3 个不同版本,比如添加1.8的时候

oracle64-1.8.0.144 added
1.8.0.144 added
1.8 added

我们没有必要保留这么多版本,其实它们都指向同一个 JDK,我们可以把多余的两个版本删除:

Bill-Mac:~ Bill$ jenv versions
* system (set by /Users/Bill/.jenv/version)
1.6
1.6.0.65
1.7
1.7.0.75
1.8
1.8.0.144
oracle64-1.6.0.65
oracle64-1.7.0.75
oracle64-1.8.0.144
Bill-Mac:~ Bill$ jenv remove 1.6.0.65
JDK 1.6.0.65 removed
Bill-Mac:~ Bill$ jenv remove 1.7.0.75
JDK 1.7.0.75 removed
Bill-Mac:~ Bill$ jenv remove 1.8.0.144
JDK 1.8.0.144 removed
Bill-Mac:~ Bill$ jenv remove oracle64-1.6.0.65
JDK oracle64-1.6.0.65 removed
Bill-Mac:~ Bill$ jenv remove oracle64-1.7.0.75
JDK oracle64-1.7.0.75 removed
Bill-Mac:~ Bill$ jenv remove oracle64-1.8.0.144
JDK oracle64-1.8.0.144 removed
Bill-Mac:~ Bill$ jenv versions
* system (set by /Users/Bill/.jenv/version)
1.6
1.7
1.8

6. 指定 Java 版本

这要用 jenv local 命令:

Bill-Mac:~ Bill$ jenv local 1.8
Bill-Mac:~ Bill$ jenv versions
system
1.6
1.7
* 1.8 (set by /Users/Bill/.java-version)

这样当前版本就变成 1.8 了,你可以看一下:

Bill-Mac:~ Bill$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) -Bit Server VM (build 25.144-b01, mixed mode)

你要是想查看当前版本在硬盘上的哪个位置,可以用 jenv which java:

Bill-Mac:~ Bill$ jenv which java
/Users/Bill/.jenv/versions/1.8/bin/java

这当然不是真实的路径,而是一个硬链接。你可以找到/Users/Bill/.jenv/versions目录,发现所有的 java 版本都被列在了这里,都是软链接,指向了对应的 java 安装目录

Bill-Mac:versions Bill$ pwd
/Users/Bill/.jenv/versions
Bill-Mac:versions Bill$ ls -l
total
lrwxr-xr-x Bill staff : 1.6 -> /Library/Java/JavaVirtualMachines/1.6.0_65-b14-.jdk/Contents/Home
lrwxr-xr-x Bill staff : 1.7 -> /Library/Java/JavaVirtualMachines/jdk1..0_75.jdk/Contents/Home
lrwxr-xr-x Bill staff : 1.8 -> /Library/Java/JavaVirtualMachines/jdk1..0_144.jdk/Contents/Home

你还可以指定一个全局的版本:

jenv global 1.8

这样,默认的 java 版本就是 1.8 了。我理解的是所有用户都是1.8。但是我使用java -version还是显示1.7。

所以尽量使用 jenv local 命令。

Mac下jdk多版本管理的更多相关文章

  1. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

  2. linux下jdk多版本管理

    linux下jdk多版本管理 项目开发中,不管是哪种语言都避免不了多个版本环境管理问题(本文虽然以jdk为例来写的,但不仅限于jdk),如何能做到快速的环境升级与切换确实是一件深思的事! 安装jdk ...

  3. MAC下 JDK环境配置、版本切换以及ADB环境配置

    网上方法,自己总结:亲测可行! 一.JDK环境配置.版本切换: 通过命令’jdk6′, ‘jdk7′,’jdk8’轻松切换到对应的Java版本: 1.首先安装所有的JDk:* Mac自带了的JDK6, ...

  4. [转]MAC下JDK版本的切换

    系统里之前先安装里jdk6的,后台又装里7,安装完成后,java -version 版本是7,  导致我eclipse打不开,一开始的做法是,把7的版本给删除掉. 删除的方法也很简单,在命令行中到 / ...

  5. Mac下JDK、Maven、Tomcat、Git开发安装及环境变量配置

    本文主要内容: - 1.Mac OS 10.11.6 [OS X EL Captain] - 2.Mac OS 安装Java 设置环境变量 - 3.Mac OS 安装Maven设置环境变量 - 4.M ...

  6. mac下JDK的安装路径

    苹果系统已经包含完整的J2SE,其中就有JDK和JVM(苹果叫VM).当然如果要升级JDK,那当然要自己下载安装了. 在MAC系统中,jdk的安装路径与windows不同,默认目录是:/System/ ...

  7. Mac下JDK安装配置

    首先可以通过官网下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html,至于下什么版本根 ...

  8. Mac下JDK卸载方法

    注:要卸载 Java,必须具有管理员权限,并且必须以 root 用户身份或者使用 sudo 工具来执行删除命令. 按照下面所示,删除一个目录和一个文件(符号链接): 1.单击位于停靠栏中的 Finde ...

  9. mac环境下jdk配置

    查看mac下jdk路径 当在Mac下安装完Java运行环境,而又没有添加JAVA_HOME变量的时候,我们如何得到JAVA_HOME变量的路径呢?直接在home目录下执行命令:/usr/libexec ...

随机推荐

  1. Android stadio 自定义debug release keystore

    1.添加siggnig name 随意,不过按我写的就可以了.设置完成之后,你的build.grade就会多出来一些: android { signingConfigs { signingConfig ...

  2. laravel5.5事件广播系统实例laravel-echo + redis + socket.io

    目录 1. 广播配置说明 1.1 广播驱动配置 1.2 注册服务提供器 2. 驱动器配置 2.1 安装predis 2.2. 配置服务端 2.2.1 安装方法 2.2.2 初始化服务端 2.2.3 运 ...

  3. laravel5.5门面

    Facades为应用程序的 服务容器 中可用的类提供了一个 静态接口 . 最直观的好处 就是需记住必须手动注入或配置的长长的类名.因此有人也理解Facades就是一个"快捷别名" ...

  4. 即将到来的5G,我们该做些什么准备?

    本文来自网易云社区. 作者:任长存 5G和4G到底什么区别? 实际上5G只是4G通信技术上的演进,都是在 光速 = 波长*频率,这个数学公式上做文章,为什么这么讲? 首先大家都用过WIFI,WIFI的 ...

  5. 如何高性能的给 UIImageView 加个圆角?

    不好的解决方案 使用下面的方式会强制Core Animation提前渲染屏幕的离屏绘制, 而离屏绘制就会给性能带来负面影响,会有卡顿的现象出现 self.view.layer.cornerRadius ...

  6. python-isinstance,issubclass

    1 #当存在继承关系时,两个类中存在相同的方法,如何执行父类的方法,通过super 2 class C1: 3 def f1(self): 4 print('c1.f1') 5 6 7 class C ...

  7. DWZ(J-UI)之路:错误

    1:关于左侧点击会把右边小窗口替换掉,导致右边永远只有一个小窗口. 方法:因为缺少了这个—— <li><a href="/admin/demo/index" ta ...

  8. super和final关键字

    一.super关键字 super关键字的使用 JAVA类中使用super来引用父类的属性或者方法,用this来引用当前对象,主要用法: 1.子类的构造函数默认第一行会默认调用父类的无参数构造函数 2. ...

  9. C 语言 进阶

    清单狂魔,只挖坑不填坑.. 前言 最近经常被询问 C 语言 相关的问题,突然便也觉得需要思考一下 C 语言的进阶了. 我用 C 语言写过的最大的一个项目,也只是那个贪吃蛇,后来就断断续续地用 Pyth ...

  10. 通过设计表快速了解sql语句中字段的含义

    打开Navicat-------> 选择数据库 ------->右键设计表------>查看下方注释