11.27 Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

前言

不知不覺 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 輸出:

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

剛安裝小夥伴運行 jenv doctor ,可以觀察到輸出:

[ERROR]\tJava binary in path is not in the jenv shims.

這代表還未正確添加 JDK,需要運行下面指令添加 JDK。

jenv 配置

JDK 配置

運行 jenv add jdk_path,將 JDK 交給 jenv 管理。

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?


可能有些小夥伴並不知道 JDK 安裝路徑,若是 MacOSX,JDK 是通過 Oracle 提供安裝包或者通過 brew 安裝,可以通過運行 /usr/libexec/java_home -V查找 JDK 路徑。

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?


若不是通過以上方式,或者為 Linux 平臺,可以先通過 which java 或者 whereis java 找出命令路徑。然後通過使用 ls -l 查看命名的實際路徑。

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

JAVA_HOME 配置

有些應用程序將會讀取系統 ${JAVA_HOME} 環境變量,通過安裝 jenv 插件,切換 JDK 版本時,將會同步設置 ${JAVA_HOME} 變量。

jenv enable-plugin export
## 運行這個才會生效
exec $SHELL -l

jenv 使用教程

jenv versions

查看當前系統 jenv 管理所有 JDK 版本。

jenv versions
Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

jenv local

通過上面命令,我們知道當前系統所有 JDK 版本之後,通過下面命令切換 JDK 版本。

JDK 版本切換 JDK1.7

jenv local 1.7
Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

這裡需要注意的,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 版本配置。

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

這時可以運行 exec $SHELL -l , ${JAVA_HOME} 將會變成當前版本路徑。

讀者福利

對於很多初級Java工程師而言,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長且無助。

整理的這些架構技術希望對Java開發的朋友們有所參考以及少走彎路,本文的重點是你有沒有收穫與成長,其餘的都不重要,希望讀者們能謹記這一點。同時我經過多年的收藏目前也算收集到了一套完整的學習資料,希望對想成為架構師的朋友有一定的參考和幫助。

下面是部分資料截圖,誠意滿滿:特別適合有1-5年開發經驗的Java程序員們學習。

資料免費領取方式:轉發後,轉發後關注我後臺私信關鍵詞【資料】獲取!

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?

而針對以上面試技術點,我在這裡也做一些技術知識面試專題資料(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術資料)免費分享,希望能更好的幫助到大家。

資料免費領取方式:轉發後,轉發後關注我後臺私信關鍵詞【資料】獲取!

Java 又雙叒叕發佈新版本,這麼多版本如何靈活管理?


分享到:


相關文章: