美文网首页Java 核心技术
java基础之-使用 jenv 进行 JDK 版本管理

java基础之-使用 jenv 进行 JDK 版本管理

作者: cbw100 | 来源:发表于2020-02-18 17:35 被阅读0次

    很多框架(比如 Dubbo)需要兼容多个 JDK 版本,开发、测试时需要不断切换版本,通过 JAVA_HOME手动修改让人痛苦不堪。

    据我了解 Node.js 有很多版本管理工具,例如 nvm,通过 nvm 切换 Node.js 版本只需要一个命令,非常方便高效,幸运的是 Java 也有类似工具,即 jenv。

    因为我的 mac os 已经装了 Java 11,所以直接安装 jenv:

    brew install jenv
    

    安装完成后,执行以下脚本:

    echo 'eval "$(jenv init -)"' >> ~/.zshrc
    

    因为我用的是 zsh,所以初始化写到 .zshrc 里,如果你用系统自带的 bash,需要改为.bash_profile

    在 mac os 中,所有 JDK 安装在/Library/Java/JavaVirtualMachines/目录中:

    blog (hexo) ✗ ll /Library/Java/JavaVirtualMachines/
    total 0
    drwxr-xr-x  3 root     wheel    96B  9 10 22:32 jdk-10.0.2.JDK
    drwxr-xr-x  3 root     wheel    96B  9 10 22:20 jdk-9.0.4.JDK
    drwxr-xr-x  3 root     wheel    96B  1 15  2016 jdk1.8.0_66.JDK
    drwxr-xr-x@ 3 satansk  staff    96B 10  6 20:25 openjdk-11.0.1.JDK
    

    可以看到我的系统中有 4 个版本的 JDK,除 Java 8/9/10 外,还有 mac os 自带的 openjdk。

    因为 jenv 无法自动查找 JDK,所以需手动添加(or 删除):

    jenv add /Library/Java/JavaVirtualMachines/JDK1.8.0_66.JDK/Contents/Home
    

    依次添加完成后,执行 jenv rehash 进行 jenv 相关的初始化工作。

    最后可以查看 jenv 管理的所有版本:

    blog (hexo) ✗ jenv versions
      system
      1.8
      1.8.0.66
      10.0
      10.0.2
      11.0
      11.0.1
      9.0
      9.0.4
      openJDK64-11.0.1
    * oracle64-1.8.0.66 (set by /Users/satansk/.jenv/version)
      oracle64-10.0.2
      oracle64-9.0.4
    

    *表示当前的全局默认 JDK 版本,可通过 jenv global 修改:

    jenv global oracle64-9.0.4
    

    不同项目使用的默认 JDK 版本可能不同,可通过 jenv local为每个项目设置自己的 JDK 版本:

    jenv local oracle64-10.0.2
    

    jenv local在当前目录下创建 .java-version文件,通过该文件为项目设置专门的 JDK 版本。

    jenv 还可以为不同构建工具(如 sbt、maven、gradle)设置 JDK 版本

    遇到的问题

    在执行命令

    ➜  ~ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    ln: /Users/ll/.jenv/versions/oracle64-1.8.0.221: No such file or directory
    

    怎么解决呢

    mkdir ~/.jenv/versions
    

    其实呢,这个就跟node版本工具nvm差不多,关于这个,具体可看文章正确的使用和安装nvm

    参考:

    更多Java相关的文章,可以查看 Java基础

    相关文章

      网友评论

        本文标题:java基础之-使用 jenv 进行 JDK 版本管理

        本文链接:https://www.haomeiwen.com/subject/erxnfhtx.html