1. 程式人生 > >新年上班第一天,我的 IDE 掛了

新年上班第一天,我的 IDE 掛了

新的一年又開始了

你年前的總結還記得麼?你新年的計劃做好了麼?反正我都沒做。
上班第一天大家都在晒著開工紅包,看著一個比一個刷到的紅包多,慶幸自己幸好沒結婚;開心的聊著過年又被七大姑八大姨爺爺奶奶爸爸媽媽催婚,然後自己沒有女朋友;說著同學朋友聚會大家都開著車去的,自己騎著一個自行車;他家孩子已經一歲多了,她又去了一次境外遊,他買了房子並漲價四千塊。而你呢,好像還是和去年沒什麼兩樣...

第一天我就開始寫程式碼了

當和大家一起刷完領導和同事的開工紅包後,我就馬不停蹄的開啟電腦準備寫程式碼啦!但萬萬沒想到,當我點開 Eclipse 的時候,她給我彈出一個對話方塊,我以為是要祝我新年快樂、雞年大吉吧呢!誰知道...

eclipse_erroe.png

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.7', but '1.8' is required.
明顯感受到了來自 IDE 深深的新年祝福,新年第一天開啟電腦第一件事就是修復 IDE,也是夠了。不過,從對話方塊上的文字,可以得出是 JDK 版本衝突了,這時候我想起來,在過年前放假回家的前一天,我在這臺電腦上又裝了 Java 1.8 版本的 JDK 來除錯其他的一個專案。CMD 開啟命令列視窗,敲擊 java -version 命令,果然還是這句話:

cmd_error.png

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'

has value '1.7', but '1.8' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

翻譯成人話:出錯啦!你告訴我 1.7 ,卻給我 1.8 ,找不到!找不到!!

既然 IDE 掛了,那就不寫程式碼了

怎麼可能,今天還有一個小功能要上線呢。首先考慮是環境變數配置出問題,檢查也沒錯,都是之前配置的 1.7 版本;接著檢查登錄檔都沒有什麼異常,CurrentVersion

也都是之前的 1.7 版本;我想不出來還是什麼問題了,就去 Google 了一下,找到了 SO 上的一個問題:Registry key Error: Java version has value '1.8', but '1.7' is required 哈哈,和我一樣,這就好辦了。再接著瞭解到,雖然我們一直配置的環境變數中的Path\JAVA_HOME等這些東西,但當我們在命令列視窗執行java -version或開啟 Eclipse 的時候,執行的並不是環境變數配置下bin目錄的檔案,而是C:\Windows\System32下的檔案。

瞭解原因以後,那再根據提示就會發現:可能我的C:\Windows\System32下的檔案是 1.8 版本的,不是 1.7 的。這是因為我先安裝的 JDK 版本是 1.7 的,這時候C:\Windows\System32下的檔案肯定只有 1.7 版本的,但當我又安裝了 1.8 版本的 JDK 之後,系統可能把 C:\Windows\System32 下的 1.7 版本檔案覆蓋掉了!掉了!!掉了!!!那我就替換唄。

肯定有人會問:既然知道是多個不同 JDK 版本,解除安裝年前安裝的 1.8 版本不就行了?那可不行,1.8 還有用呢,所以,需要保留 JDK 1.7 和 1.8 兩個版本,現在要做的就是讓兩個版本共存且不再衝突

替換。兩個不同版本 JDK 共存

Windows 下多個 JDK 版本共存首要條件是得僅有一個版本為主要的,其他不同的版本 JDK 呼叫只需要在 Tomcat 的bin/catalina.bat中配置JAVA_HOME即可了。選定自己需要的 JDK 版本後,就要把環境變數的JAVA_HOME、登錄檔等這些關於 JDK 版本的配置改為你需要的,我這裡需要 1.7 版本,就拿 1.7 版本做演示。

1.安裝 1.7 和 1.8 JDK,配置 1.7 環境變數(已安裝,略)。
2.檢視或修改登錄檔
找到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft節點,檢視Java Runtime EnvironmentJava Development kit中的CurrentVersion值是不是 1.7 ,不是就改為 1.7 。如圖:

regedit.png

3.替換 java.exe/javaw.exe/javaws.exe
找到環境變數JAVA_HOME中配置路徑下的bin目錄中的 java.exe/javaw.exe/javaws.exe 這三個檔案,用這三個替換C:\Windows\System32C:\Windows\SysWOW64中的檔案。如圖:

jdk_bin.png

當然,還有C:\ProgramData\Oracle\Java\javapath下的這三個檔案快捷方式,也要替換一下。

4.完成
命令列視窗再次執行java -version,看到下面畫面就是成功啦!Eclipse 也能打開了,我寫完了程式碼。

cmd_success.png

總結一下

新年開工第一天竟然是以修 IDE 開始的,打死我也想不到,但我們作為開發者不就是整天在做修補工作麼,修完這個 Bug ,還有下一個 Bug 在等著,我認為這才是這個職業的魅力所在,你永遠不知道接下來等著你的是什麼,在沒來臨的那一刻。

好了,年也過完了,新的年又開始了,你也許去年混的不怎麼樣,但你放心,你今年會依然混的不怎麼樣,哈哈,開個玩笑,不過在我有限的認知中,我認為我們所從事的這個職業是現階段社會上的職業中幸福的了(因為我特麼沒幹過其他職業)。當然,我知道你們又要跳槽了,祝大家找工作的找到好工作,不找工作的好好加班寫程式碼,未來都是大家的。