springboot丟失jdk路徑——jdk安裝與jdk多版本管理
筆者之前於spring boot安裝過程中,遇到有關jdk的一些問題,特於此記錄。
上述問題關鍵,是有關linux系統的java開發環境安裝與jdk多版本管理。
以筆者的subsystem為例(ubuntu),首先運行「java -version」。
輸出顯示,不存在可用jdk。筆者的最佳期待當然是使用「apt-get」直接完成安裝,所以檢查可用jdk源,「apt-cache search java|grep jdk」。
筆者準備安裝jdk8,運行「apt-getinstall openjdk-8-jdk」。
安裝結果如上圖(僅保留最後幾行輸出),自然,此處jdk版本使用的是openjdk。與之相似的安裝過程還包括於centos上使用yum指令進行安裝。使用「yum search java|grep jdk」或者「yum -y list java*」查看源中可獲取的java版本。
關注圖中紅框內容,一定要選擇「-devel」版本jdk進行安裝,另一版本的jdk安裝後僅僅是jre(此坑對於筆者,教訓深刻)。了解上述問題後,大家只需要簡單暴力地執行「yuminstall -y java-1.8.0-openjdk-devel.x86_64」命令,即可於centos上完成jdk安裝。而且值得注意的是,上述兩種方法,都不需要像之前那般進行繁瑣的環境變數配置。
簡單描述就是下載,卸載舊版本,然後安裝或者升級同版本jdk,並且使用rpm同樣不需要進行環境變數配置。
簡單描述就是下載,然後使用tar解壓,接下來需要處理有關環境變數的配置。打開配置文件「vim /etc/profile」,添加如下代碼,「
JAVA_HOME=/usr/java/jdk1.8.0_162
JRE_HOME=/usr/java/jdk1.8.0_162/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH」,
執行「source /etc/profile」使環境配置立時生效。還有日後容易踩坑的最後一步,需要大家創建一軟連接「ln -s /usr/java/jdk1.8.0_162/bin/java /usr/bin/java」,之所以如此,是因為自己註冊的某些linux服務(本文特別指出springboot的jar註冊服務),默認情況從/usr/bin/java路徑使用java,利用前文所述的方法會自動創建該軟連接(這點也是後文重點),但如果自己下載並解壓安裝的話,該軟連接就需要自己創建。
最後是筆者本文想介紹的最重要內容,jdk多版本管理。
現在筆者準備於subsystem上再安裝一個jdk版本。安裝完畢,首先通過「rpm -qa | grep jdk」或者「rpm -q –whatprovides java」查看本地可用jdk版本。
如果存在多版本,如何做到有效兼容與管理呢?大家可執行如下命令,也許就能清楚,「ll /usr/bin/| grep java」,能夠看到所有java指令均被委託給alternatives這個多版本管理工具。
大家繼續跟蹤java,接著執行「ll/etc/alternatives/java」,至此大家才能看到實際指向的文件。
採用上述手段,意味著linux系統中java相關指令始終指向中間人alternatives,由中間人管理具體的版本與實現(有點面向介面編程的意思)。這亦是前幾種安裝方式均不需要配置環境變數的原因,因為所有java相關環境變數均交由alternatives配置。
筆者系統,目前使用的默認版本是java8,那如何將默認版本改成java9呢?redhat官網存在相關說明。
通常情況,只需要執行上圖中前兩步操作,修改java和javac相關委託配置後,linux會一併把所有java環境配置都切換過來。
如圖,筆者輸入需要切換的java版本代表的數字,就能夠讓系統環境於多個java版本間自如切換,需要注意的是這兩條指令需要一起執行,否則會存在兼容問題。
完~
TAG:豬的思想圈 |