V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
elepant
V2EX  ›  Java

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

  •  
  •   elepant · Oct 28, 2015 · 8945 views
    This topic created in 3834 days ago, the information mentioned may be changed or developed.
    14 replies    2015-11-25 18:30:44 +08:00
    reeco
        1
    reeco  
       Oct 28, 2015
    thekll
        2
    thekll  
       Oct 28, 2015
    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  
       Oct 28, 2015
    第一反应, jvm

    好吧我只是进来水的,主要是 Ruby 有个什么 rvm 我至今没搞懂
    lizhuoli
        4
    lizhuoli  
       Oct 28, 2015
    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  
       Oct 28, 2015 via iPhone
    port activate javaxxx
    iluhcm
        6
    iluhcm  
       Oct 28, 2015
    ```
    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  
       Oct 28, 2015
    brew install jenv
    elepant
        8
    elepant  
    OP
       Oct 29, 2015
    @robertlyc 有没有比较详细的介绍,一个链接也好,刚开始使用 Mac 。
    elepant
        9
    elepant  
    OP
       Oct 29, 2015
    @lizhuoli 网上搜过,也试过你说的这个,但这个要修改 .zshsrc 文件,弄了半天也没有改好。
    inmyfree
        10
    inmyfree  
       Oct 29, 2015
    我在 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 脚本,这样点击打开就可以直接切换了
    elepant
        11
    elepant  
    OP
       Oct 30, 2015
    感谢 @robertlyc 的启发,感谢 Google ,这里有使用 jenv 管理多版本 java 的方法: http://scsidisk.github.io/2014/07/mac_install_multiple_versions_of_jdk/,亲试超级方便。前提是安装了 brew 。
    elepant
        12
    elepant  
    OP
       Oct 30, 2015 via Android
    elepant
        13
    elepant  
    OP
       Oct 30, 2015 via Android
    dragonsunmoon
        14
    dragonsunmoon  
       Nov 25, 2015
    添加下面几行到 ~/.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 根据你实际安装的路径做修改
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1028 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 19:01 · PVG 03:01 · LAX 12:01 · JFK 15:01
    ♥ Do have faith in what you're doing.