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裏面的版本相對應)不一樣的時候,eclipse就會報錯,code=13這個錯誤,絕決辦法就是,把你的path裏面的javahome路徑清除,eclipse會自動尋找註冊表裏面的運行環境。myeclipse默認使用自帶的,我們可以自己修改。我們通常聽到的修改jdk,其實就是指定它的運行和編譯。由於目前知識有限,有不對的地方歡迎指正。




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