文章來源:http://1t.click/bjAG
前言
不知不覺 JDK13 發布已有兩個月,不知道各位有沒有下載學習體驗一番?每次下載安裝之后,需要重新配置一下 Java 環境變量。等到運行平時的項目又需要切回之前 JDK 版本,這又需要重新環境變量。這么重復配置顯然非常低效,又不能靈活切換版本。
所幸通過萬能 Google 找到解決方案,使用 jenv 管理 JDK 版本。
jenv 介紹
熟悉 Ruby 的同學,應該會覺得比較眼熟,jenv 就是 Java 平台的 rbenv
工具。
jenv 是一個命令行工具,可以在 Linux/OS X 平台使用,可以管理多個版本 JDK,方便在多個版本 JDK 之間切換,另外其還可以設置 JAVA_HOME
環境變量。
Windows 真的傷不起 😭
使用 jenv 有一個前提,必須提前安裝 JDK,其不提供下載安裝 JDK 的功能。MacOSX 平台可以提前使用 brew
安裝 JDK。
jenv 安裝
手動安裝
首先下載 jenv 源程序
git clone https://github.com/jenv/jenv.git ~/.jenv
然后再將 jenv 命令路徑放入 Shell 配置文件中。
若使用 Shell 為 bash
:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
若使用 Shell 為 zsh
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc
自動安裝
若使用 MacOSX,可以直接使用 brew
安裝:
brew install jenv
jenv 校驗
安裝 jenv 之后,可以運行 jenv doctor
檢查是否正確安裝。以下為我本機 MacOSX 輸出:
剛安裝小伙伴運行 jenv doctor
,可以觀察到輸出:
[ERROR] Java binary in path is not in the jenv shims.
這代表還未正確添加 JDK,需要運行下面指令添加 JDK。
jenv 配置
JDK 配置
運行 jenv add jdk_path
,將 JDK 交給 jenv 管理。
可能有些小伙伴並不知道 JDK 安裝路徑,若是 MacOSX,JDK 是通過 Oracle 提供安裝包或者通過 brew
安裝,可以通過運行 /usr/libexec/java_home -V
查找 JDK 路徑。
若不是通過以上方式,或者為 Linux 平台,可以先通過 which java
或者 whereis java
找出命令路徑。然后通過使用 ls -l
查看命名的實際路徑。
JAVA_HOME 配置
有些應用程序將會讀取系統 ${JAVA_HOME}
環境變量,通過安裝 jenv 插件,切換 JDK 版本時,將會同步設置 ${JAVA_HOME}
變量。
jenv enable-plugin export
## 運行這個才會生效
exec $SHELL -l
jenv 使用教程
jenv versions
查看當前系統 jenv 管理所有 JDK 版本。
jenv versions
jenv local
通過上面命令,我們知道當前系統所有 JDK 版本之后,通過下面命令切換 JDK 版本。
JDK 版本切換 JDK1.7
jenv local 1.7
這里需要注意的,jenv local
切換 JDK 版本只對當前文件夾有效,如果切換到其他文件夾,將會切換會當前默認 JDK 版本。
jenv shell
使用 jenv shell
使切換的 JDK 版本對整個 Shell session 有效。重啟 Shell 終端或重新打開新的 Shell 終端,該配置失效。
jenv shell 9.0
jenv global
jenv global
將會設置一個全局默認的 JDK 版本,即使重啟 Shell 窗口,該配置也不會改變。
jenv global 9.0
jenv 小問題
上面幾個是 jenv 經常使用的指令,若想了解 jenv 其他指令,可以通過 jenv commands
查找其他指令。
使用 jenv 過程可能會發現,當切換 JDK 版本之后, ${JAVA_HOME}
環境變量沒有改變,還是上一個 JDK 版本配置。
這時可以運行 exec $SHELL -l
, ${JAVA_HOME}
將會變成當前版本。
最后
做個小調查,你還在用那個版本 JDK?各位小伙伴可以留言一下,嘿嘿~
歡迎關注我的公眾號:程序通事,獲得日常干貨推送。如果您對我的專題內容感興趣,也可以關注我的博客:studyidea.cn