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

Mac 上管理多个 java 版本

  •  
  •   rich1e · 2016-01-19 15:06:30 +08:00 · 4352 次点击
    这是一个创建于 3260 天前的主题,其中的信息可能已经有所发展或是发生改变。

    java 版本管理工具 jEnv

    jEnv 可以用简单的命令切换到 Java 的不同版本,但无法安装任何版本的 Java ,所以我们自己必须安装它们,将 jEnv 指向它们。

    Linux / OS X

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

    Mac OS X via Homebrew

    $ brew install jenv
    

    设置 JAVA_HOME

    Bash

    $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
    
    # JAVA_HOME
    $ echo 'JAVA_HOME=`/usr/libexec/java_home`' >> ~/.bash_profile
    $ echo 'export JAVA_HOME' >> ~/.bash_profile
    

    Zsh

    $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
    $ echo 'eval "$(jenv init -)"' >> ~/.zshrc
    
    # JAVA_HOME
    $ echo 'JAVA_HOME=`/usr/libexec/java_home`' >> ~/.zshrc
    $ echo 'export JAVA_HOME' >> ~/.zshrc
    

    查看当前 Java 版本

    $ echo $JAVA_HOME
    

    另外可以使用 -V 选项列出所有版本的 JAVA_HOME :

    $ /usr/libexec/java_home -V
    

    安装不同版本的 Java ,并添加到 jEnv

    jEnv 安装和配置完成后,先安装 Java 包。

    从 Apple webiste 下载 Java6 来安装。它将被安装到 Apple webiste 。 用下面的命令来把它添加到 jEnv :

    $ jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
      oracle64-1.6.0.39 added
    $ jenv add /Library/Java/JavaVirtualMachines/jdk17011.jdk/Contents/Home
      oracle64-1.7.0.11 added
    

    运行 jenv versions 将看到:

    $ jenv versions
    * system (set by /Users/ajones/.jenv/version)
      oracle64-1.6.0.39
      oracle64-1.7.0.11 (set by /Users/hikage/.jenv/version)
    

    让我们从 Oracle 下载并安装 Java 7 。这次他被安装到 /Library/Java/JavaVirtualMachines/,所以用下面的命令把它添加到 jEnv :

    jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/

    同样,我们也可以使用 Homebrew Cask 安装:

    brew cask install java

    它将被安装到和 Java 7 相同的位置,因此以相同的方式添加它。

    使用 jenv 管理 Java 版本

    列出当前系统已安装的 Java 版本

    $ jenv versions
      system
      oracle64-1.6.0.39
    * oracle64-1.7.0.11 (set by /Users/hikage/.jenv/version)
    

    全局配置

    $ jenv global oracle64-1.6.0.39
    

    单个项目设置

    $ jenv local oracle64-1.6.0.39
    

    shell 设置

    $ jenv shell oracle64-1.6.0.39
    

    目前 github 有 2 个在 mac 上切换 Java 版本的解决方案,一个是国人的(有段时间没更新了, 2016.1.19 ),一个是老外的;

    参考:

    在 OS X 管理多个 Java 版本

    在 MAC 上查找和设置$JAVA_HOME

    Mac 下同时安装多个版本的 JDK

    jEnv - Manage your Java environment

    jenv:Java enVironment Manager

    Important Java Directories on Mac OS X

    9 条回复    2021-01-29 16:31:54 +08:00
    crystone
        1
    crystone  
       2016-01-19 16:24:53 +08:00
    这个好,支持
    xcaspar
        2
    xcaspar  
       2016-01-19 22:43:13 +08:00   ❤️ 1
    export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
    export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
    export JAVA_6_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    export JAVA_5_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home

    alias jdk5="export JAVA_HOME=${JAVA_5_HOME}"
    alias jdk6="export JAVA_HOME=${JAVA_6_HOME}"
    alias jdk7="export JAVA_HOME=${JAVA_7_HOME}"
    alias jdk8="export JAVA_HOME=${JAVA_8_HOME}"

    export JAVA_HOME=${JAVA_7_HOME}

    切换 JDK 的时候,直接 jdk5 、 jdk6 、 jdk7 、 jdk8
    hqs123
        3
    hqs123  
       2016-01-20 08:35:54 +08:00
    不错,学习下
    nicky_hk
        4
    nicky_hk  
       2016-01-20 14:33:25 +08:00
    @xcaspar 和我一样,不过我的 alias 是 j5,j6,j7,j8 :-)
    pOH8
        5
    pOH8  
       2016-01-20 21:13:29 +08:00
    苹果有自己的管理工具,不需要 jEnv
    /usr/libexec/java_home -V

    #fish
    set -x JAVA_HOME (/usr/libexec/java_home -v 1.6)

    #zsh
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
    RangerWolf
        6
    RangerWolf  
       2016-01-21 15:21:41 +08:00
    想问下 为什么会有切换 Java 版本的需求?
    好奇而已
    nicky_hk
        7
    nicky_hk  
       2016-01-21 18:47:50 +08:00
    @RangerWolf 很正常。有些企业级软件升级的时候,依赖的 jdk 需要升级
    RangerWolf
        8
    RangerWolf  
       2016-01-22 09:13:57 +08:00
    @nicky_hk 不好意思,还是不太理解, 那只需要保持最后 jdk 的版本也是最新的就好了啊? 相当于把之前的卸载重新安装一个最新版
    DinoStray
        9
    DinoStray  
       2021-01-29 16:31:54 +08:00
    为啥不支持直接安装不同版本的 jdk, 还需要先手动安装
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2721 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:28 · PVG 19:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.