1. 程式人生 > >【原創】Open JDK更換過程及更換後的問題總結與分析

【原創】Open JDK更換過程及更換後的問題總結與分析

javac 原則 是否 java環境 sys classpath 運行環境 too 計算

由於2019年1月起Oracle對通用計算以外的應用場景開始收費,綜合看來還是主要針對嵌入式的Java應用進行收費,畢竟嵌入式設備的數量是龐大的,可以有數億元進賬。

因Oracle JDK收費,各大公司也開始了從Oracle JDK更換到開源的Open JDK,對於開源JDK,有經過驗證的zulu版本,也有原汁原味的Open版本。

zulu版本包含多種安裝格式,有直接解壓的zip包,也有msi安裝文件,對於Linux和Mac OS,有tar包和dmg包可供選擇。

我們知道安裝JDK是要配置環境變量的,但不是所有的軟件都需要Java Develoment Kit,即javac.exe,大部分其實用的是Java Run Time,即java.exe。

因為msi安裝會寫入註冊表項,所以在Windows平臺上,如果安裝了zulu等開源JDK,並配置了JAVA_HOME及PATH環境變量,還提示未安裝java,提示去Oracle網站下載,請安裝msi格式,而不要使用zip解壓方式。

雖然工作中一直使用Java語言及JDK,但大多數的小夥伴,對於標準的JAVA環境變量,還是配置的五花八門,雖然看起來都能正常運行和編寫java程序,但實際上在更換jdk或升級jdk版本時,工作量就來了。

這裏給出標準的參考:

  1. 首先環境變量分用戶環境變量和系統環境變量,即Linux的user profile和system profile;

  2. 不管是配置用戶級的還是系統級的,要知道用戶環境變量會繼承系統的環境變量;用戶的環境變量只對自己有效,可以在不重啟電腦的情況下生效,系統環境變量是對登錄的每個用戶都有效,當出現jdk版本沖突時,請檢查是否設置了多重環境變量;

  3. 新建JAVA_HOME變量,指向JDK安裝路徑,指定到主目錄即可,不需要指定到bin文件夾;例如C:\Program Files\Java\jdk-1.8.0_191,而不是C:\Program Files\Java\jdk-1.8.0_191\bin這個路徑;

  4. 新建CLASSPATH變量,指向JDK安裝路徑下lib庫裏的dt.jar,以及JDK安裝路徑下jre\lib文件夾下的tools.jar和rt.jar,以及當前目錄;總體即為CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\jre\lib\tools.jar; (Linux環境下將%JAVA_HOME%都修改為$JAVA_HOME)

  5. 更改Path環境變量,將%JAVA_HOME%\bin;添加到Path環境變量的最前端;

  6. 測試JAVA環境變量是否配置成功,請執行javac -version 和 java -version ;

  7. 項確定系統環境變量中是否配置了多個JDK,執行 where java.exe命令或where javac.exe ;(Linux下將where換成which即可)

  8. 測試所有涉及到Java的應用程序,因為Java分32位和64位,所以要確認清楚自己所裝的JDK是否與自己需要用的開發環境所需一致;

如果某個應用需要更換JDK,需要先換運行環境的JDK,再換開發環境的JDK,最後用開發環境新JDK打包程序jar文件,再在運行環境中運行,保證最小化的差異驗證原則;

【原創】Open JDK更換過程及更換後的問題總結與分析