如何在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\

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

  注意:以下Oracle發行版只能用於個人開發,不能應用於商業軟件開發:

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

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

環境變量

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

  • JAVA_HOME - 多數腳本使用該環境變量來確定Java版本的位置。
  • Path - 當從控制檯運行Java二進制文件(如iava和javac)時,使用的是該環境變量。

手動設置環境變量

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

  如下圖所示,

  • "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

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

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

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

echo %JAVA_HOME%
java -version

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

添加切換Java版本的腳本

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

  這些腳本文件被命名爲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”環境變量後,你需要打開一個新的控制檯來獲取新添加的環境變量的值。

  關掉該控制檯,然後重新打開一個控制檯,輸入"java -version",你會看到當前Java版本又恢復到默認版本了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章