V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Asan
V2EX  ›  Java

Mac OSX 下如何便捷地在两个 Java 版本之间进行切换呢?机器上装了 Java6、Java7 和 Java8。

  •  
  •   Asan · 2015-10-28 21:47:33 +08:00 · 8332 次点击
    这是一个创建于 3349 天前的主题,其中的信息可能已经有所发展或是发生改变。
    14 条回复    2015-11-25 18:30:44 +08:00
    reeco
        1
    reeco  
       2015-10-28 21:54:37 +08:00
    thekll
        2
    thekll  
       2015-10-28 22:40:55 +08:00
    OS X 下可以同时安装多个 JDK 版本, jre 则只能存在一个版本。
    使用 /usr/libexec/java_home 工具可以快速切换,具体请参照:

    http://apple.stackexchange.com/questions/69086/how-can-i-switch-between-the-two-java-versions-in-mountain-lion-now-that-java-pr
    secondwtq
        3
    secondwtq  
       2015-10-28 22:59:40 +08:00
    第一反应, jvm

    好吧我只是进来水的,主要是 Ruby 有个什么 rvm 我至今没搞懂
    lizhuoli
        4
    lizhuoli  
       2015-10-28 23:00:26 +08:00
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
    wohenyingyu01
        5
    wohenyingyu01  
       2015-10-28 23:28:29 +08:00 via iPhone
    port activate javaxxx
    iluhcm
        6
    iluhcm  
       2015-10-28 23:29:55 +08:00
    ```
    function setjdk() {
    if [ $# -ne 0 ]; then
    removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
    if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
    fi
    export JAVA_HOME=`/usr/libexec/java_home -v $@`
    export PATH=$JAVA_HOME/bin:$PATH
    fi
    }
    function removeFromPath() {
    export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
    }
    ```
    robertlyc
        7
    robertlyc  
       2015-10-28 23:34:39 +08:00
    brew install jenv
    Asan
        8
    Asan  
    OP
       2015-10-29 07:23:51 +08:00
    @robertlyc 有没有比较详细的介绍,一个链接也好,刚开始使用 Mac 。
    Asan
        9
    Asan  
    OP
       2015-10-29 07:25:29 +08:00
    @lizhuoli 网上搜过,也试过你说的这个,但这个要修改 .zshsrc 文件,弄了半天也没有改好。
    inmyfree
        10
    inmyfree  
       2015-10-29 09:43:26 +08:00
    我在 ubuntu 搞过这个东东
    其实原理很简单,就是更改 JAVA_HOME 的隐射目录,原始的切换命令如下

    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

    但是每次写这个很累,然后就想到 alias 改别名方式

    在系统启动的时候添加

    alias export16="export JAVA_HOME=$(/usr/libexec/java_home -v 1.6) "
    alias export17="export JAVA_HOME=$(/usr/libexec/java_home -v 1.7) "
    alias export18="export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) "

    然后重启,在想切换 java 版本的时候直接终端输入 export16 就可以了,你也可以直接在桌面建立几个 shell 脚本,这样点击打开就可以直接切换了
    Asan
        11
    Asan  
    OP
       2015-10-30 07:49:54 +08:00
    感谢 @robertlyc 的启发,感谢 Google ,这里有使用 jenv 管理多版本 java 的方法: http://scsidisk.github.io/2014/07/mac_install_multiple_versions_of_jdk/,亲试超级方便。前提是安装了 brew 。
    Asan
        12
    Asan  
    OP
       2015-10-30 07:56:55 +08:00 via Android
    Asan
        13
    Asan  
    OP
       2015-10-30 08:01:28 +08:00 via Android
    dragonsunmoon
        14
    dragonsunmoon  
       2015-11-25 18:30:44 +08:00
    添加下面几行到 ~/.zshrc (如果你用 zsh) 或 ~/.bash_profile (如果你用默认的 shell)

    export JAVA_6_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home
    export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home
    export JAVA_HOME=$JAVA_8_HOME

    alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
    alias jdk7='export JAVA_HOME=$JAVA_7_HOME'
    alias jdk6='export JAVA_HOME=$JAVA_6_HOME'

    在终端命令行下执行 jdk6 , jdk7, jdk8 来回切换

    以上的 JAVA_HOME 根据你实际安装的路径做修改
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2535 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:22 · PVG 13:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.