java基礎之-使用 jenv 進行 JDK 版本管理


java基礎之-使用 jenv 進行 JDK 版本管理


很多框架(比如 Dubbo)需要兼容多個 JDK 版本,開發、測試時需要不斷切換版本,通過 JAVA_HOME手動修改讓人痛苦不堪。

據我瞭解 Node.js 有很多版本管理工具,例如 nvm,通過 nvm 切換 Node.js 版本只需要一個命令,非常方便高效,幸運的是 Java 也有類似工具,即 jenv。

因為我的 mac os 已經裝了 Java 11,所以直接安裝 jenv:

<code>brew install jenv
/<code>

安裝完成後,執行以下腳本:

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

因為我用的是 zsh,所以初始化寫到 .zshrc 裡,如果你用系統自帶的 bash,需要改為.bash_profile。

在 mac os 中,所有 JDK 安裝在/Library/Java/JavaVirtualMachines/目錄中:

<code>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
/<code>

可以看到我的系統中有 4 個版本的 JDK,除 Java 8/9/10 外,還有 mac os 自帶的 openjdk。

因為 jenv 無法自動查找 JDK,所以需手動添加(or 刪除):

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

依次添加完成後,執行 jenv rehash 進行 jenv 相關的初始化工作。

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

<code>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
/<code>

*表示當前的全局默認 JDK 版本,可通過 jenv global 修改:

<code>jenv global oracle64-9.0.4
/<code>

不同項目使用的默認 JDK 版本可能不同,可通過 jenv local為每個項目設置自己的 JDK 版本:

<code>jenv local oracle64-10.0.2
/<code>

jenv local在當前目錄下創建 .java-version文件,通過該文件為項目設置專門的 JDK 版本。

jenv 還可以為不同構建工具(如 sbt、maven、gradle)設置 JDK 版本

遇到的問題

在執行命令

<code>➜  ~ 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
/<code>

怎麼解決呢

<code>mkdir ~/.jenv/versions
/<code>

其實呢,這個就跟node版本工具nvm差不多


分享到:


相關文章: