首頁  >  文章  >  Java  >  搞定多個java版本的靈活切換與管理

搞定多個java版本的靈活切換與管理

angryTom
angryTom轉載
2019-11-28 16:41:492938瀏覽

前言:近兩年,Java 版本升級頻繁,感覺剛剛掌握Java8,寫本文時,已聽到java14 的消息,無論是嚐鮮新特性(Java12 中Collectors.teeing 超強功能使用),還是由於項目升級/相容需要,我們可能都要面臨管理多個Java 版本的情況。

搞定多個java版本的靈活切換與管理

另外 Oracle 自 Java11 開始,更改了使用者協議,任何商用都會收費。寫本文時,得到訊息「微軟宣布加入 OpenJDK」,打不過就選擇 OpenJDK。隨便G 一下,當個故事了解就可以

(推薦影片:#java影片教學##)  

#配置單一Java 環境變數本身沒什麼技術含量可言,但當需要管理多個Java 版本,重複配置環境變數顯然是非常枯燥的,按照傳統的配置方式我們又不能靈活的切換Java 版本

那要如何輕鬆管理與使用多個版本Java?

多重版本Java 管理

顯然我們不是第一個有這種困境的人,我所知道的現有方案有三種:

● Jabba

● jenv

● sdkman

本文主要說明如何透過

sdkman

打破我們面臨的困境,幫助我們靈活配置與使用Java

sdkman 介紹

SDKMAN 是一個用於在大多數基於Unix 系統上管理多個軟體開發工具包(Java, Groovy, Scala, Kotlin and Ceylon. Ant, Gradle 等) 的平行版本的工具。

搞定多個java版本的靈活切換與管理它提供了一個方便的命令列介面 (CLI) 和 API,用於安裝、切換、刪除和列出候選物件。本文主要透過管理 Java 來說明 sdkman 的使用

sdkman 安裝

在類別 unix 平台上安裝 sdkman 非常容易。它可以順利的安裝在Mac OSX、Linux、WLS、Cygwin、Solaris和FreeBSD 上,同時也支援Bash和 ZSH shell。 只需打開一個新終端機並輸入:

$ curl -s "https://get.sdkman.io" | bash

按照對應的指令提示,完成對應的操作後繼續輸入:

$ source "$HOME/.sdkman/bin/sdkman-init.sh"

到這裡我們就可以驗證sdk 的安裝版本了:

$ sdk version
sdk version

上圖紅色框標記顯示我目前sdkman 的版本,每次執行sdk version 指令時,都會檢查是否會有新版本,如果要更新輸入y 就可以

有些系統發行版本不包含zip 和unzip,如果安裝時遇到相關錯誤,可以輸入如下指令安裝zip 和unzip

$ sudo apt-get install zip unzip
從上面的安裝指令上可以看出,sdkman 預設的安裝路徑是在$HOME/.sdkman
下,我們也可以自訂安裝路徑,只需要指定SDKMAN_DIR 變數值就好了:

$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash

到這裡sdkman 的安裝就結束了,我們來看看如何使用

sdkman 使用教程

命令列下學習一個新玩意當然是查看它的help指令,輸入:

$ sdkman help
sdk help[object Object]

感覺上圖按顏色區分內容後,sdkman 的使用說明也就結束了,我們按照上面的圖來詳細說明一下使用教學

##sdk list

先來輸入:

$ sdk list
sdk list[object Object]

綠色的標記就是sdkman 整合的所有可用的candidate,透過按下回車「enter」按鍵,會看到更多可用candidate

搞定多個java版本的靈活切換與管理我們指定candidate,輸入:

$ sdk list java
sdk list java[object Object]

從上圖中可以看到所有java 可用的版本version,以及標識indentifier,以及狀態status,我已經安裝了java 12 和11

有了這些資訊做鋪墊,我們可以安裝任意sdkman 內建的軟體開發包了,繼續以java 為例

sdk install

#回看sdkman help 指令的輸出,使用install 指令,我們再安裝一個Java 最新13.0.1.j9 版本

搞定多個java版本的靈活切換與管理

從上圖你可以看出,綠色標記的內容是list 指令結果中的version 值,但是報錯不可用,輸入indentifier 編號才能正常下載,這裡需要注意安裝完後,status 就會編程installed 狀態

sdk current

###當安裝多個版本的java 時,我們輸入下面命令以取得目前正在使用candidate 的版本###
$ sdk current java
sdk current java
######### #######sdk use############了解了目前使用版本,如果我們想切換到其他版本, 可以輸入:###
$ sdk use java 12.0.2.j9-adpt
###注意⚠️: 這裡同樣是指定的indentifier 的值###

搞定多個java版本的靈活切換與管理

sdk default

如果我们想指定某个版本为默认版本,可以输入:

$ sdk default java jdk1.8.0_162.jdk

注意⚠️: 这里同样是指定的 indentifier 的值

搞定多個java版本的靈活切換與管理

sdk uninstall

当我们想卸载某个版本可以输入:

$ sdk uninstall java 12.0.2.j9-adpt

注意⚠️: 这里同样是指定的 indentifier 的值

sdk upgrade

如果我们想升级某个 candidate,可以输入:

$ sdk upgrade java
sdk flush

使用 sdkman 时间变长也会慢慢产生很多缓存内容,我们可以输入

清理广播消息:

$ sdk flush broadcast

清理下载的 sdk 二进制文件(长时间使用后清理,可以节省出很多空间):

$ sdk flush archives

清理临时文件内容:

$ sdk flush temp

到这里 sdkman 的基本使用就已经介绍完了,其实这些命令都不用急,想不起来的时候执行 sdk help 来临时查看一下就好

sdkman 卸载

如果我们不喜欢 sdkman 了,我们也可以轻松的卸载掉它:

$ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman

最后打开你的 .bashrc、.bash_profile 和/或者 .profile,找到并删除下面这几行。

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"

我用的 zshrc,找到 .zshrc 文件删除掉上面内容即可

到这里基于 Unix 系统的,有关 sdkman 的安装,使用及下载都已经介绍完了,可以上手试一试了

本文来自php中文网,java教程栏目,欢迎学习!  

以上是搞定多個java版本的靈活切換與管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除