jdk1.6,jdk1.7,jdk1.8安裝共存問題
一次心血來潮,決心研究一下,電腦上面安裝3個版本的JDK,於是開始了測試,其實也不能說是安裝3個版本的,1.6版本的是公司給的壓縮包形式的,1.7和1.8版本的是我自己在電腦上面安裝的,首先遇到的問題就是,當1.7安裝好以後,(1.7的安裝的環境變數配置自行百度吧)我是用cmd檢視java -version, 首先說明,我的Path路徑設定的是1.6版本的。
遇到上面的問題,有的人可能會疑惑,為什麼我配置的1.6,在我沒安裝1.7版本的時候,我設定path是1.6,java -version它顯示的是1.6。當我安裝了1.7 它顯示的是1.7。這個問題,需要清楚的知道一個編譯和執行時他們是不一樣的,這個問題,後面講述。
當我安裝1.8版本的時候,安裝成功了,再次使用java -version 的時候出現了下面的情況
上面的問題的大概意思就是,我需要的是1.7,你現有的是1.8,然後計算機就懵逼了,不知道怎麼搞了。
遇到這個問題,我們需要清楚一個事情,在cmd下執行java命令時,系統首先會去windows的System32資料夾下去找java.exe如果找到就執行,這裡其實和登錄檔也是有關係的,(我的登錄檔寫的是1.8但是system32下面還是1.7的java.exe,然後它提示登錄檔那裡有問題,);然後再根據配置的java環境變數去找,找到即執行。如果經過這2步還沒找到就會提示最常見的一個錯誤提示:xxxx 不是內部或外部命令,也不是可執行的程式或批處理檔案。這時候應該看看這兩個地方,一般是path的問題。
出現上面的問題後,我就到system32下面把java.exe,javaw.exe以及javaws.exe刪除了,然後又把自己安裝的1.8JDK的這三個程式放到system32下面
放完以後再次開啟cmd 執行 java -version 出現了最終的結果。
在這個問題的背後,我們需要知道的是,我們的path設定的JDK路徑到底有什麼用,我們配置的是執行環境,而實際上編譯的時候會走system32下面的java.exe去編譯,系統預設的是走system32下面的東西。
我們使用eclipse,myeclipse的時候,eclipse預設使用path裡面的執行,使用預設的system32裡面的程式去編譯,當path路徑和system32裡面(也就是登錄檔,前提是你的登錄檔和system32裡面的版本相對應