首頁 Java java教程 搞定多個java版本的靈活切換與管理

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

Nov 28, 2019 pm 04:41 PM
java版本 版本切換 版本管理

前言:近兩年,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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1596
276
Maven設定Java版本的最佳實務與推薦方法 Maven設定Java版本的最佳實務與推薦方法 Feb 22, 2024 pm 03:18 PM

使用Maven建置Java專案時,經常會遇到需要設定Java版本的情況。正確設定Java版本不僅可以確保專案在不同環境中正常運行,還能避免一些相容性問題,提升專案的穩定性和可維護性。本文將介紹Maven設定Java版本的最佳實務和推薦方法,並提供具體的程式碼範例供參考。 1.在pom.xml檔中設定Java版本在Maven專案的pom.xml檔中,可以通

Node.js如何進行版本管理? 3款實用版管理工具分享 Node.js如何進行版本管理? 3款實用版管理工具分享 Aug 10, 2022 pm 08:20 PM

Node.js如何進行版本管理?以下這篇文章給大家整理分享3 個非常實用的 Node.js 版本管理工具,希望對大家有幫助!

使用 Microsoft Edge 的「錢包」功能,你可以輕鬆管理已儲存的信用卡資訊 使用 Microsoft Edge 的「錢包」功能,你可以輕鬆管理已儲存的信用卡資訊 May 09, 2023 pm 09:19 PM

微軟正在MicrosoftEdge瀏覽器中測試「錢包」功能。顧名思義,這是一種管理數位資產(如信用卡)的新方法,以及與瀏覽器或Microsoft帳戶相關聯的MicrosoftRewards儲蓄。目前,此功能似乎尚未向所有人推出。然而,它已經出現在最新的金絲雀版本的Edge以及公共穩定版本中,現在是105.0.1343.27。我們在兩個版本中都有它,但有可能在A/B測試中。如果您可以前往URL欄中的edge://wallet並查看我們在下面提供的體驗,您就會知道它是否

Laravel中間件:為應用程式新增資料庫遷移和版本管理 Laravel中間件:為應用程式新增資料庫遷移和版本管理 Aug 02, 2023 am 10:17 AM

Laravel中間件:為應用程式新增資料庫遷移和版本管理在開發和維護一個Web應用程式時,資料庫遷移和版本管理是一個非常重要的任務。它們使我們能夠輕鬆地管理資料庫的結構和數據,而無需手動更新或重建資料庫。 Laravel框架提供了強大且便利的資料庫遷移和版本管理功能,透過使用中間件,我們可以更方便地整合這些功能到我們的應用程式中。首先,我們需要確保我們的Lar

PHP入門指南:SVN版本管理 PHP入門指南:SVN版本管理 May 20, 2023 am 08:29 AM

作為常用的伺服器端腳本語言,PHP憑藉其開源、跨平台的優勢,被廣泛應用於Web開發領域。而在多人協作的開發中,版本控制是一個不可或缺的工具,它可以有效地管理原始碼的修改與更新,避免因團隊成員之間程式碼不同步而造成的衝突。而SVN作為一款流行的版本控制工具,在PHP開發的應用也十分廣泛。本文將為大家介紹PHP開發中的SVN版本控制的基礎知識,包括SVN的安

如何使用Docker進行容器的更新和版本管理 如何使用Docker進行容器的更新和版本管理 Nov 07, 2023 am 10:10 AM

如何使用Docker進行容器的更新和版本管理隨著軟體開發和部署的不斷發展,容器化技術成為了現代化開發流程中的重要組成部分。而Docker作為目前最受歡迎的容器化平台之一,為我們提供了一種方便、靈活且可擴展的容器管理方式。在使用Docker進行容器的更新和版本管理方面,我們可以藉助一些技巧和工具來提高效率和降低風險。本文將介紹如何使用Docker進行容器的更新與版本

遵守PSR2和PSR4規範的PHP專案版本管理與發布流程 遵守PSR2和PSR4規範的PHP專案版本管理與發布流程 Oct 15, 2023 am 10:27 AM

遵守PSR2和PSR4規範的PHP專案版本管理與發布流程,需要具體程式碼範例引言:在開發PHP專案的過程中,遵守編碼規範是一個良好的習慣。其中,PHP-FIG組織提出的PSR2規範是PHP編碼規範的基本依據,而PSR4規範是關於自動載入的規範。本文將介紹如何在PHP專案中遵守PSR2和PSR4規範,並給出對應的程式碼範例。一、PSR2規範PSR2規範涵蓋如何

如何進行PHP秒殺系統的版本管理與升級部署 如何進行PHP秒殺系統的版本管理與升級部署 Sep 21, 2023 am 11:01 AM

如何進行PHP秒殺系統的版本管理和升級部署,需要具體程式碼範例隨著網路的快速發展,越來越多的企業開始採用秒殺系統來進行促銷活動,以實現銷售成長。在這個過程中,版本管理和升級部署非常重要,可以確保系統的穩定性和功能的持續最佳化。本文將介紹如何進行PHP秒殺系統的版本管理和升級部署,並提供了具體的程式碼範例。一、版本管理版本管理是為了管理專案的不同版本,以確保每個版

See all articles