天天看點

如何在Windows中快速切換不同的Java版本

  作為一名Java程式員,我們經常需要在不同的Java版本下運作我們的應用程式,或者,我們想在不同Java版本上嘗試運作我們的代碼。當然,如果你在IDE下工作,可以非常輕松地切換Java版本(大部分IDE都提供該功能),但是如果你隻想在CMD下運作Java程式,而又不想頻繁地去修改系統環境變量,有什麼好的辦法呢?

  本文将向你介紹如何在Windows中同時安裝多個Java版本,以及如何通過指令行非常簡單地在不同地Java版本間進行切換。

安裝多個不同版本的Java

  在Windows中同時安裝多個Java版本非常容易,你隻需要下載下傳并運作每個版本的安裝程式,它們會自動安裝到不同的目錄中

下載下傳不同版本的Java

  • Java SE 1.1 - 該版本不能運作在64位Windows上
  • Java SE 1.2 - 預設安裝到目錄C:\jdk1.2.2\和C:\Program Files (x86)\JavaSoft\JRE\1.2\ - 推薦安裝到目錄C:\Program Files (x86)\Java\jdk1.2.2\和目錄C:\Program Files (x86)\Java\jre.1.2.2\。
  • Java SE 1.3 - 預設安裝到目錄C:\jdk1.3.1_28\ - 推薦安裝到目錄C:\Program Files (x86)\Java\jdk1.3.1_28\。
  • Java SE 1.4 - 預設安裝到目錄C:\j2sdk1.4.2_19\ - 推薦安裝到目錄C:\Program Files (x86)\Java\jdk1.4.2_19\。

  下面這些版本不用修改安裝目錄,直接預設安裝:

  • Java SE 5
  • Java SE 6
  • Java SE 7
  • Java SE 8
  • Java SE 9 / OpenJDK 9
  • Java SE 10 / OpenJDK 10

  注意:以下Oracle發行版隻能用于個人開發,不能應用于商業軟體開發:

  • Java SE 11 / OpenJDK 11
  • Java SE 12 / OpenJDK 12
  • Java SE 13 / OpenJDK 13
  • Java SE 14 / OpenJDK 14
  • Java SE 15 / OpenJDK 15
  • Java SE 16 / OpenJDK 16

  以下最新版本僅可用于測試:

  • JDK 17

  注意,由于Oracle版權的問題,我們推薦下載下傳OpenJDK版本:

  • OpenJDK
  • AdoptOpenJDK

環境變量

  大部分情況下,我們都可以通過以下兩個環境變量來确定目前應用程式使用的是哪個Java版本:

  • JAVA_HOME - 多數腳本使用該環境變量來确定Java版本的位置。
  • Path - 當從控制台運作Java二進制檔案(如iava和javac)時,使用的是該環境變量。

手動設定環境變量

  上面列出來的Java安裝程式在安裝過程中都會自動建立環境變量,首先我們需要手動清除掉這些環境變量。最簡單的方式是使用Windows搜尋欄,輸入“env”,然後打開"Edit the system environment variables"。當然,你也可以打開Windows資料總管,右鍵單擊“我的電腦”,選擇“屬性”,在打開的視窗中點選“進階系統設定”,然後打開“環境變量”。

如何在Windows中快速切換不同的Java版本
如何在Windows中快速切換不同的Java版本

  如下圖所示,

  • "User variables"中應該不包含任何與Java相關的環境變量。
  • "System variables"中應該包含"JAVA_HOME"環境變量并且指向你本地所安裝的其中一個Java版本的目錄(我目前安裝的是Java 16)。如果"JAVA_HOME"環境變量不存在,則需要手動添加。
  • 删除“Path”環境變量中與Java相關的值,如:
    • C:\ProgramData\Oracle\Java\javapath
    • C:\Program Files (x86)\Common Files\Oracle\Java\javapath
  • 同時在"Path"環境變量中添加:
    • %JAVA_HOME%\bin
如何在Windows中快速切換不同的Java版本

  修改完之後的“Path”環境變量的值看起來像這樣:

如何在Windows中快速切換不同的Java版本

  這裡的“%JAVA_HOME%\bin”確定當程式查找“Path”環境變量時,找到的Java版本的位置與“JAVA_HOME”環境變量中所對應的位置是一緻的。

  現在打開控制台,輸入下面的指令來檢查以上設定是否有效:

echo %JAVA_HOME%
java -version      

  如果你看到下圖所示的結果,則表示設定沒有問題:

如何在Windows中快速切換不同的Java版本

添加切換Java版本的腳本

  接下來我們将為每個Java版本添加一個腳本檔案,以友善在多個不同Java版本間進行快速切換。我将這些腳本檔案存放到目錄C:|Program Files\Java\scripts\中,然後将該目錄添加到"Path"環境變量:

如何在Windows中快速切換不同的Java版本

  這些腳本檔案被命名為java16.bat、java15.bat、java14.bat、java14.bat、java13.bat等等,在每一個腳本檔案中,我們會修改目前“JAVA_HOME”環境變量的值為對應Java版本的位置。例如下面是java16.bat腳本檔案的内容:

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk-16
set Path=%JAVA_HOME%\bin;%Path%
echo Java 16 activated.      

  這個腳本很簡單,我們在“Path”變量值的開頭部分插入了目前要切換的Java版本所對應目錄的位置,該位置是Java版本目錄中Java.exe可執行檔案的位置,是以,每一次Java版本的切換都會導緻“Path”變量的值增加,不過這個隻會影響目前打開的控制台,當控制台被關閉後該操作也就失效了。

  下面這個ZIP檔案包含了從Java 1.2到Java 17的所有腳本,你可以下載下傳以供參考:scripts-up-to-jdk17.zip

  最後,讓我們來快速測試一下我們的腳本是否能正常工作。注意,将目錄C:|Program Files\Java\scripts\添加到“Path”環境變量後,你需要打開一個新的控制台來擷取新添加的環境變量的值。

如何在Windows中快速切換不同的Java版本

  關掉該控制台,然後重新打開一個控制台,輸入"java -version",你會看到目前Java版本又恢複到預設版本了。