Mac环境下Java_JDK多版本管理

现在电脑上安装的JDK版本为1.8,感觉出现了很多问题。
打算把1.8卸载掉,安装1.7版本。
查资料的时候顺便又发现了Mac上JDK多版本的管理工具,顺便学习了。


卸载JDK 1.8版本

  1. 在iTerm(或者Terminal)中执行命令

    1
    2
    sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
    sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane
  2. 上述命令删除了plugin和System Perference中的控制项,而不是删除实际执行程序。
    删除执行程序的方法参考 Removing Java 8 JDK from Mac

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sudo rm -rf /Library/Java/JavaVirtualMachines/jdk<version>.jdk
    // 我的版本为 jdk1.8.0_51.jdk
    // 即 sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk
    sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
    sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
    sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
    sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper
    sudo rm -rf /Library/LaunchDaemons/com.oracle.java.JavaUpdateHelper.plist
    sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist
  3. 至此 JDK 1.8已经完全卸载了 再输入 JAVA -version 系统会提示安装JDK

安装JDK 1.7

  1. 去Oracle官网下1.7版本JDK
  2. 下来一个dmg文件, 安装之
  3. 继续安装JDK 1.8,与上同理。安装完执行 java -version 版本来到了1.8
  4. 我们来瞅瞅当前系统的Java版本,执行 /usr/libexec/java_home -verbose
    1
    2
    3
    4
    OscarMacBook:downloads oscar$ /usr/libexec/java_home -verbose
    Matching Java Virtual Machines (2):
    1.8.0_91, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
    1.7.0_79, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

设置终端中 通过 java7 和 java8 来切换环境

  1. ~/.bash_profile 中添加

    1
    2
    3
    4
    5
    6
    7
    8
    9
    export JAVA_7_HOME="`/usr/libexec/java_home -v '1.7*'`"
    export JAVA_8_HOME="`/usr/libexec/java_home -v '1.8*'`"
    alias java7='export JAVA_HOME=$JAVA_7_HOME'
    alias java8='export JAVA_HOME=$JAVA_8_HOME'
    # Default java7
    export JAVA_HOME="`/usr/libexec/java_home -v '1.7*'`"
  2. 然后,我们就可以用java7java8 来切换java环境了。 但素,这只能影响终端中java的执行版本,不能影响图形程序执行的java版本

jEnv管理Java多版本

用 jEnv 是另一种管理方法,下面给出配置,但是个人觉得bash就够了,两套不要搞乱了
博主就是先搞了bash,再搞了jenv,然后两套一起弄乱了,所以不是对jenv特别好奇就别往下看了,毕竟bahs命令已经炒鸡方便了。
当然,如果你有时间把两套都同时figure out了,还请留言指教。

安装jenv和配置

  1. 安装 homebrew jenv(默认你的mac已经安装了brew)

    1
    $ brew install jenv
  2. ~/.bash_profile 的最后添加

    1
    2
    3
    4
    5
    export PATH="$HOME/.jenv/bin:$PATH"
    eval "$(jenv init -)"
    export JENV_ROOT=/usr/local/opt/jenv
    // 鳖问我为什么,我也不知道
  3. jenv add 加入java版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // 添加JDK 1.7
    $ sudo jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
    oracle64-1.7.0.79 added
    1.7.0.79 added
    1.7 added
    // 执行后得到
    oracle64-1.7.0.79 added
    1.7.0.79 added
    1.7 added
    //添加JDK 1.8
    $ sudo jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
    // 执行后得到
    oracle64-1.8.0.91 added
    1.8.0.91 added
    1.8 added
  4. 执行 sudo jenv versions

    1
    2
    3
    4
    5
    6
    7
    8
    $ sudo jenv versions
    * system (set by /Users/oscar/.jenv/version)
    1.7
    1.7.0.79
    1.8
    1.8.0.91
    oracle64-1.7.0.79
    oracle64-1.8.0.91
  5. 执行 sudo jenv local 1.7 或者sudo jenv local 1.8 随便玩

    1
    2
    3
    4
    5
    6
    7
    8
    $ sudo jenv local 1.7
    $ java -version
    java version "1.7.0_79"
    Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
    Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
    //显示java路径
    $ jenv which java
  6. 太乱了 jenv remove
    额 这部分(6)先跳过,乱删版本后面会出错,先这样吧………………

    1
    2
    $ sudo jenv remove 1.8
    JDK 1.8 removed

    直到

    1
    2
    3
    4
    sudo jenv versions
    system
    * 1.7.0.79 (set by /Users/oscar/.jenv/version)
    1.8.0.91

    开心了

整了半天没觉得 jenv和第三部分bash里设置有什么区别哎呀

要开始使用jEnv管理了

  1. 先玩几个命令
    查看当前java版本

    1
    $ echo $JAVA_HOME

    列出所有版本的 JAVA_HOME:

    1
    $ /usr/libexec/java_home -V
  2. 全局配置, 这个根据前面 jenv versions 命令的结果来选

    1
    $ jenv global 1.7
  3. 单个项目设置

    1
    $ jenv local 1.7.0.79
  4. shell 设置

    1
    $ jenv shell 1.7.0.79

参考

  1. Mac OS X JAVA多版本并存
  2. Mac上管理多个java版本
  3. 在OS X中使用jEnv管理多个Java版本